3

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

尝试使用 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”引用该值,但是如何确定该选项是通过标志还是默认设置的?提前谢谢了!

4

2 回答 2

3

想通了:

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

IsSet()如果在命令行上使用了该标志,或者如果它是通过默认设置设置的,那么问题就是如此。

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

于 2017-01-10T02:21:12.887 回答
0

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

于 2020-12-06T14:55:39.987 回答