如何引用go-flag IsSet,需要的功能代码示例

时间:2017-01-08 00:58:25

标签: go go-flag

Go的新手,并且有一个基本的概念问题(我认为)......

尝试使用github.com/jessevdk/go-flags并让它主要工作。 --help和whatnot工作正常,标志正在传递等等。

我需要了解是通过标志设置选项还是使用提供的默认值通过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"来引用该值,但是如何通过标志或默认值来确定该选项是否已设置?非常感谢提前!

2 个答案:

答案 0 :(得分:2)

想出来:

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

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

因此解决了引用IsSet()的表面问题,但仍在寻找能够判断出现的问题,因为我希望标志默认显示在--help中。

答案 1 :(得分:0)

在这里也可以做新手。 IsSetDefault()也可用。 (也许是因为您问并回答了问题而添加的。)