golang命令行参数解析-flag | KaiQ.Gu|KerwinKoo Blog
golang flag
flag是标准库中实现的命令行工具,可支持命令行参数格式如下:
1 | -flag xxx (使用空格,一个 - 符号) |
其中,布尔类型的参数防止解析时的二义性,应该使用等号的方式指定。
用法
命令行设置
1.flag.Xxx(),其中Xxx可以是Int、String等;返回一个相应类型的指针,如:
var ip = flag.Int("age", 1234, "help message for age")或者:flag.XxxVar(),将flag绑定到一个变量上,如:
1 | var flagvar int |
上面两种方法通用。
其中,int类型可以是十进制、十六进制、八进制甚至是负数;bool类型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。Duration可以接受任何time.ParseDuration能解析的类型
2.创建自定义flag:
1 | flag.Var(&flagVal, "name", "help message for flagname") |
但是这种没有提供默认值,所以默认值就是golang规定的类型零值。
解析
在所有的flag定义完成之后,可以通过调用flag.Parse()进行解析。
flag其他函数
获取非flag参数
1 | fmt.Println("------ Args start ------") |
visit只包含已经设置了的flag
1 | fmt.Println("------ visit flag start ------") |
visitAll只包含所有的flag(包括未设置的)
1 | fmt.Println("------ visitAll flag start ------") |
flag参数默认值
1 | fmt.Println("------ PrintDefaults start ------") |
是否已经解析
1 | fmt.Println("parsed? = ", flag.Parsed()) |