simpleFlag.go
,分为四部分。simpleFlag.go
程序识别两个命令行选项:第一个是Boolean
选项,第二个是整数值。simpleFlag.go
的第一部分如下:simpleFlag.go
的第二部分如下:flag.Bool("k", true, "k")
语句定义了名为k
的Boolean
型的命令行选项,默认值为true
。语句的最后一个参数是将与程序的用法信息一起显示的字符串。类似,flag.Int()
函数的作用是增加对整数命令行选项的支持。flag.Parse()
。simpleFlag.go
的第三部分程序如下:Go
代码中,你看到了如何获取选项的值。好处是flag
自动将flag.Int()
标识关联的输入转换为整数值。即你不用再做转换操作。另外,flag
包确保它得到一个可接受的整数值。simpleFlag.go
的剩余代码如下:simpleFlag.go
交互将创建如下输出:simpleFlag.go
中遇到错误,则会得到如下错误信息:flag
包更实际、更高级的程序了。程序funWithFlag.go
分为五部分。funWithFlag.go
识别各种选项,包括一个由逗号分隔的多个值的选项。此外,它还将说明如何访问位于可执行文件末尾且不属于任何选项的命令行参数。funWithFlag.go
中使用的flag.Var()
函数创建一个满足flag.Value
接口的任意类型的标识,flag.Value
接口定义如下:funWithFlag.go
第一部分代码如下:NamesFlag
数据结构用于 flag.Value
接口。funWithFlag.go
的第二部分如下:funWithFlag.go
的第三部分代码如下:Set()
方法确保相关命令行选项没有被设置。之后,获取输入并使用 strings.Split()
函数来分隔参数。最后,参数被保存在 NamesFlag
结构的 Names
字段。funWithFlag.go
的第四部分代码如下:funWithFlag.go
的最后部分如下:flag.Args()
切片保留命令行参数,而 manyNames
变量保留来自 flag.Var()
命令行选项的值。funWithFlag.go
产生如下输出:除非你开发一个不需要选项的命令行小工具,否则你极需要使用flag
包来处理您的程序的命令行选项。