定义 flag 参数
方法一:
通过 flag.Xxx() 方法返回一个相应的指针,举几个栗子:
wordPtr := flag.String("word", "foo", "a string")
numbPtr := flag.Int("numb", 42, "an int")
boolPtr := flag.Bool("fork", false, "a bool")
使用形式为 flag.Type(name, defValue, usage)
方法二:
通过 flag.XxxVar() 方法将 flag 绑定到一个变量,该种方式返回值类型,举个栗子:
var svar string
flag.StringVar(&svar, "svar", "bar", "a string var")
使用形式为 flag.TypeVar(&flagvar, name, defValue, usage)
方法三:
通过 flag.Var() 绑定自定义类型,自定义类型需要实现 Value 接口(Receives必须为指针),
type Value interface {
String() string
Set(string) error
}
使用方式是 flag.Var(&flagvar, name, usage)
解析
调用 flag.Parse() 解析命令行参数到定义的flag
注意,注意,注意(重要的事情说三遍)
这个方法一定要调用,而且是在定义所有flag方法之后,同时,在使用获取到的参数之前调用。这个方法的解释里面有写,详细例子请看下面代码。
获取参数其他
还可通过 flag.Args(), flag.Arg(i) 来获取非 flag 命令行参数
栗子
//FlagExce flag
func FlagExce() {
name := flag.String("name", "stb", "jdy")//返回一个
var age int
flag.IntVar(&age, "age", 18, "is age")
//上面是定义flag获取的方法,之后执行解析函数
flag.Parse()//这个函数一定要放在这个位子
//这里在使用上述获取到参数之前要调用解析函数
log.Println("name:", *name)//使用获取到的参数
log.Println("age:", age)
}
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)