Go的flag库可以用来从命令行参数中解析变量。它有一些便利的特性,比如设置默认值,设置不同类型的变量,以及支持注释。Go的flag库使用起来也比较简单,只需要调用flag.Parse()
函数,它会自动解析命令行参数。Go的flag库还支持多种变量类型,比如字符串、布尔值、整数、浮点数等。使用者可以根据需要来选择恰当的类型。此外,Go的flag库还支持多个命令行参数的组合使用,可以大大提高程序的灵活性。
使用Go的flag库来解析变量的例子如下:
package main
import "flag"
func main() {
//两种不同的方式定义命令行参数
var name string
flag.StringVar(&name, "name", "default name", "name of the user")
//注意age是一个指针
age := flag.Int("age", 18, "age of the user")
flag.Parse()
fmt.Println("name: ", name)
fmt.Println("age: ", *age)
// Do something with the name
}
上面的示例代码中,flag.StringVar
用来定义一个字符串变量name
,"name"
表示命令行参数的名称,"default name"
表示默认值,"name of the user"
表示注释。flag.Parse()
用来解析命令行参数,解析之后变量name
里面就会存放用户输入的值。
flag包支持的命令行参数类型有bool
、int
、int64
、uint
、uint64
、float
float64
、string
、duration
。
flag参数 | 有效值 |
---|---|
字符串flag | 合法字符串 |
整数flag | 1234、0664、0x1234等类型,也可以是负数。 |
浮点数flag | 合法浮点数 |
bool类型flag | 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。 |
时间段flag | 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。 |
flag.Args() ////返回命令行参数后的其他参数,以[]string类型
flag.NArg() //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数