【golang】flag包关于FlagSet的一个问题记录

我的理解FlagSet类型能处理一系列的指令,显示也是如此,看下面一个例子

kengTest := flag.NewFlagSet("keng", flag.ContinueOnError)
name := kengTest.String("name", "zhangsan", "name plz")
age := kengTest.String("age", "1000", "age plz")
kengTest.Parse([]string{"-name", "gss", "-age", "10"})
fmt.Println(*name, *age) //gss 10

但是在涉及其他类型(比如bool)的时候似乎parse不是那么准确

keng := flag.NewFlagSet("keng1", flag.ContinueOnError)
married := keng.Bool("married", false, "是否结婚")
dead := keng.Bool("dead", false, "存活")
keng.Parse([]string{"-married", "true", "-dead", "true"})
fmt.Println(*married, *dead) //true false 这就是坑

执意要使用flagSet的话,似乎多次parse能解决

keng := flag.NewFlagSet("keng1", flag.ContinueOnError)
married := keng.Bool("married", false, "是否结婚")
dead := keng.Bool("dead", false, "存活")
	// 实际上多次parse能解决这个问题
keng.Parse([]string{"-married", "true"})
keng.Parse([]string{"-dead", "true"})
fmt.Println(*married, *dead) //true true 正常了

不知道是不是我理解有问题,有懂的兄弟拜托说一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值