golang 中有一个好用的 flag 包
一个执行文件,我们可以启用不同的参数来控制程序的行为,如果程序希望做到
- 启动参数用户可配
- 启动参数有说明
- 启动参数有默认值
我们该怎么做呢?这时候 flag 包就起到作用了
func main() {
// 设置
port = flag.Int("port", 1234, "解释xxx")
// 解析
flag.Parse()
fmt.Println("端口号:", *port)
}
这个时候我在终端运行
$ go run main.go -h
Usage of /xxxxx
-port int
解释xxx (default 1234)
$ go run chatServer.go
端口号: 1234
$ go run chatServer.go -port 1111
端口号: 1111
可以看到 flag 设置的启动参数是 port,参数的默认值是 1234,当使用-h
查看帮助时候,参数的说明是“解释xxx”
有一些很有意思也很知名的基于 flag 的开源项目,比如 spf13/cobra,很多大型的开源项目都使用了 cobra,比如 k8s