登录
首页 >  Golang >  Go问答

Golang中Argparse未正确处理多个标志的值

来源:stackoverflow

时间:2024-03-13 09:39:25 452浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Golang中Argparse未正确处理多个标志的值》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

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

./test -p
./test -s servicename
./test -p -s servicename

意味着 -p 应以空值传递,而 -s 应以任何服务名称传递。 1 和 2 工作正常,但在第三个 -p 标志中取值“-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

正确答案


尚未使用 argparse lib,仅使用标准 flag,但根据文档,您将 p 配置为字符串参数,而它实际上是一个布尔标志。

您应该配置与此类似的参数:

sarg := parser.string("s", ...)
    parg := parser.flag("p", ...)

然后你可以像这样使用它:

if *pArg {
     ...
  }

到这里,我们也就讲完了《Golang中Argparse未正确处理多个标志的值》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>