Golang Argparse没有为多个标志选择正确的值



我有一个名为test的golang二进制文件。我有两个使用golang argparse库的标志-p和-s。我希望用户像下面的场景一样通过它们:

./test -p
./test -s serviceName
./test -p -s serviceName

意味着传递-p时应使用空值,传递-s时应使用任何服务名称。1和2工作良好,但在第三个-p标志取值"0"-s";。我想从第三条得到的是-p应该是空值("(,-s应该是";serviceName";。代码:

parser := argparse.NewParser("./test", "Check status/version of test")
parser.DisableHelp()
platformFormatVal := parser.String("p", "platform", &argparse.Options{Required: false, Help: "Print status of platform", Default: "Inplatform"})
serviceFormatVal := parser.String("s", "service", &argparse.Options{Required: false, Help: "Print status of service", Default: "Inservice"})
err := parser.Parse(os.Args)
if err != nil {
//generic error
}
platformFormat = *platformFormatVal
serviceFormat = *serviceFormatVal

没有使用argparselib,只有标准的flag,但根据文档,您将p配置为字符串参数,而它实际上是一个布尔标志。

您应该配置类似的参数:

sArg := parser.String("s", ...)
pArg := parser.Flag("p", ...)

然后你可以这样使用它:

if *pArg {
...
}

相关内容

  • 没有找到相关文章

最新更新