【问题标题】:Check if all flags were set (no flags blank)检查是否设置了所有标志(没有标志空白)
【发布时间】:2017-07-18 00:02:10
【问题描述】:

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

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

【问题讨论】:

    标签: go go-flag


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 2015-12-29
      • 2010-11-23
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      相关资源
      最近更新 更多