如何确保从命令行设置每个标志参数?我想在没有专门检查每个标志名称的情况下这样做,并且想要动态地检查所有标志。
以下是我的代码main.go
:
package main
import (
"fmt"
"flag"
)
func main() {
x := flag.String("x", "", "x flag")
y := flag.String("y", "", "y flag")
flag.Parse()
}
我运行它,例如,像这样:go run main.go -x hello
答案 0 :(得分:4)
这可以使用VisitAll
函数来实现。
VisitAll以字典顺序访问命令行标志,为每个标志调用fn。它会访问所有标志,甚至是未设置的标志。
示例代码(在flag.Parse()
之后添加):
flag.VisitAll(func (f *flag.Flag) {
if f.Value.String()=="" {
fmt.Println(f.Name, "not set!")
}
})