Go 文档(http://golang.org/pkg/flag/)说:
FlagSet 类型允许定义独立的标志集,例如在命令行界面中实现子命令。
我需要这个功能,但我不知道如何说服标志 pkg 这样做。当我定义两个 FlagSet 时,如果命令行具有用于第二个的标志,则解析其中一个会给我错误和警告。例子:
f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
apply := f1.Bool("apply", false, "")
silent := f1.Bool("silent", false, "")
if err := f1.Parse(os.Args[1:]); err == nil {
fmt.Println(*apply, *silent)
}
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
reset := f2.Bool("reset", false, "")
if err := f2.Parse(os.Args[1:]); err == nil {
fmt.Println(*reset)
}
cmd -apply
如果我尝试执行OR ,我会收到各种警告cmd -reset
。我想将这些 FlagSet 分开,因为我只想-silent
为-apply
.
我错过了什么?