【问题标题】:How to reference go-flag IsSet, functional code example needed如何引用go-flag IsSet,需要功能代码示例
【发布时间】:2020-12-06 22:55:39
【问题描述】:

Go 新手,遇到一个基本的概念问题(我认为)...

尝试使用 github.com/jessevdk/go-flags 并使其大部分工作。 --help 和其他工作正常,标志正在传递等。

我需要了解选项是通过标志还是使用提供的默认值通过 go-flags 解析器设置的。似乎 go-flags 有一个“IsSet”功能,但我不知道如何引用它。假设:

var opts struct {
    Port int `short:"p" long:"Port" description:"IP port" default:"1111"
}
_, err := flags.Parse(&opts) 

我可以通过“opts.Port”引用该值,但是如何确定该选项是通过标志设置的还是默认设置的?非常感谢!

【问题讨论】:

    标签: go go-flag


    【解决方案1】:

    想通了:

    parser := flags.NewParser(&opts, flags.Default) o := parser.FindOptionByLongName("Port) if o.IsSet() {}

    问题是IsSet() 为真,如果该标志在命令行上使用或如果它是通过默认设置。

    因此解决了引用IsSet() 的表面问题,但仍在寻找一种能力来判断发生了什么,因为我希望标志默认值显示在 --help 中。

    【讨论】:

      【解决方案2】:

      这里也是新手。 IsSetDefault() 也可用。 (也许,它是在您提出并回答您的问题时添加的。)

      【讨论】:

        猜你喜欢
        • 2015-12-19
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 2018-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多