命令行 – 在GoLang中定义独立的FlagSets
发布时间:2020-12-16 19:20:32 所属栏目:大数据 来源:网络整理
导读:Go文档( http://golang.org/pkg/flag/)说: The FlagSet type allows one to define independent sets of flags,such as to implement subcommands in a command-line interface. 我需要这个功能,但是我无法弄清楚如何劝说标记pkg来做到这一点.当我定义两个F
Go文档(
http://golang.org/pkg/flag/)说:
我需要这个功能,但是我无法弄清楚如何劝说标记pkg来做到这一点.当我定义两个FlagSets时,解析其中的一个会给我错误和警告,如果命令行具有第二个标志.例: f1 := flag.NewFlagSet("f1",flag.ContinueOnError) apply := f1.Bool("apply",false,"") silent := f1.Bool("silent","") if err := f1.Parse(os.Args[1:]); err == nil { fmt.Println(*apply,*silent) } f2 := flag.NewFlagSet("f2",flag.ContinueOnError) reset := f2.Bool("reset","") if err := f2.Parse(os.Args[1:]); err == nil { fmt.Println(*reset) } 如果我尝试执行cmd -opply OR cmd -reset,我会收到各种警告.我想保持这些FlagSets是分开的,因为我想只有-silent工作的应用程序. 我失踪了什么
您首先要区分子命令,然后在右侧的FlagSet上调用Parse.
f1 := flag.NewFlagSet("f1",flag.ContinueOnError) silent := f1.Bool("silent","") f2 := flag.NewFlagSet("f2",flag.ContinueOnError) loud := f2.Bool("loud","") switch os.Args[1] { case "apply": if err := f1.Parse(os.Args[2:]); err == nil { fmt.Println("apply",*silent) } case "reset": if err := f2.Parse(os.Args[2:]); err == nil { fmt.Println("reset",*loud) } } http://play.golang.org/p/eaEEx_EReX (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |