我的理解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 正常了
不知道是不是我理解有问题,有懂的兄弟拜托说一下