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

标签 go go-flag

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”引用该值,但我如何才能知道该选项是通过标志设置的还是默认设置的?非常感谢!

最佳答案

想通了:

解析器 := flags.NewParser(&opts, flags.Default) o := parser.FindOptionByLongName("端口) 如果 o.IsSet() {}

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

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

关于go - 如何引用go-flag IsSet,需要功能代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528341/

相关文章:

go - Martini 渲染在页面上显示 {{ yield }}

go - 检查是否设置了所有标志(没有标志为空)

testing - 在 go test 中处理命令行参数

go - 如何仅在 go-flag 包中显示当前设置?

go - MergeSort 算法与 goroutines 问题

govips Option struct 如何设置白色背景

reflection - 如何使用反射在golang中创建具有给定名称(字符串)的数组

arrays - slice 可以引用不同索引范围中的差异数组/slice ,还是有方便的解决方法?