go_flag 末蓝、 2022-03-02 05:12 248阅读 0赞 import "flag" flag包实现了命令行参数的解析。 要求: 使用flag.String(), Bool(), Int()等函数注册flag. ### 常用的flag注册方式 ### 1、下例声明了一个整数flag,解析结果保存在\*int指针ip里: import "flag" var ip = flag.Int("flagname", 1234, "help message for flagname") # flagname是参数名称,1234是参数默认值,"xxx"是参数含义描述 2、也可以将flag绑定到一个变量,使用Var系列函数: var flagvar int func init() { flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") } 3、或者你可以自定义一个用于flag的类型(满足Value接口)并将该类型用于flag解析,如下: flag.Var(&flagVal, "name", "help message for flagname") 对这种flag,默认值就是该变量的初始值。 ### 解析 ### 在所有flag都注册之后,调用: flag.Parse() 来解析命令行参数写入注册的flag里。 ### 结果 ### 解析之后,flag的值可以直接使用。如果你使用的是flag自身,它们是指针;如果你绑定到了某个变量,它们是值。 fmt.Println("ip has value ", *ip) fmt.Println("flagvar has value ", flagvar) 解析后,flag后面的参数可以从flag.Args()里获取或用flag.Arg(i)单独获取。这些参数的索引为从0到flag.NArg()-1。 ### 语法 ### 命令行flag语法: -flag -flag=x -flag x // 只有非bool类型的flag可以 可以使用1个或2个’-'号,效果是一样的。最后一种格式不能用于bool类型的flag,因为如果有文件名为0、false等时,如下命令: cmd -x * 其含义会改变。你必须使用-flag=false格式来关闭一个bool类型flag。 Flag解析在第一个非flag参数(单个"-“不是flag参数)之前停止,或者在终止符”–"之后停止。 整数flag接受1234、0664、0x1234等类型,也可以是负数。bool类型flag可以是: 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False 时间段flag接受任何合法的可提供给time.ParseDuration的输入。
还没有评论,来说两句吧...