2

如何确保从命令行设置每个标志参数?我想在不专门检查每个标志名称的情况下执行此操作,而是希望动态检查所有标志。

这是我的代码,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

4

1 回答 1

4

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

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

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

flag.VisitAll(func (f *flag.Flag) {
    if f.Value.String()=="" {
        fmt.Println(f.Name, "not set!")
    }
})
于 2017-07-17T16:02:10.547 回答