例如 fooCmd 子命令有多个 flag
fooCmd := flag.NewFlagSet("foo", flag.ExitOnError)
fooA := fooCmd.String("a", "0", "a")
fooB := fooCmd.String("b", "0", "b")
// ... flag 可以有多个
fooCmd.Parse(os.Args[2:])
// 如何判断?
if 仅有 a flag {
A()
} else if 仅有 b flag {
B()
} else if 同时有 a 和 b {
AB()
} else {
X()
}
调用
> go run test.go foo
X()
> go run test.go foo -a 10
A()
> go run test.go foo -a 10 -b 20
AB()
使用 visit() 方法遍历 flag
不知道还有没有更好的方法了