检查是否已设置所有标志(没有标记为空)

时间:2017-07-17 16:02:11

标签: go go-flag

如何确保从命令行设置每个标志参数?我想在没有专门检查每个标志名称的情况下这样做,并且想要动态地检查所有标志。

以下是我的代码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

1 个答案:

答案 0 :(得分:4)

这可以使用VisitAll函数来实现。

  

VisitAll以字典顺序访问命令行标志,为每个标志调用fn。它会访问所有标志,甚至是未设置的标志。

示例代码(在flag.Parse()之后添加):

flag.VisitAll(func (f *flag.Flag) {
    if f.Value.String()=="" {
        fmt.Println(f.Name, "not set!")
    }
})