Go Flag 用法说明 包含 Word 值

我已经定义了一个自定义标志来接受这样的字符串片段:


type strSliceFlag []string


func (i *strSliceFlag) String() string {

    return fmt.Sprint(*i)

}


func (i *strSliceFlag) Set(value string) error {

    *i = append(*i, value)

    return nil

}

然后我用


    ...

    var tags strSliceFlag

    flag.Var(&tags, "t", tFlagExpl)

    flag.Parse()

    ...

当我构建这个程序并使用 help flag: 运行它时main -h,它会打印出:


Usage of main:

  -t value

        Test explanation

我的问题是,这个词value是从哪里来的?我找不到如何删除它。我认为这可能与标志的默认值有关。


海绵宝宝撒
浏览 75回答 1
1回答

慕侠2389804

value是flag.UnquoteUsage为自定义类型(通过 呈现flag.(*FlagSet).PrintDefaults)选择的默认参数名称。您可以在使用文本中使用反引号覆盖默认值。反引号从使用文本中删除。例如:package mainimport (    "flag"    "fmt")type stringSlice []stringfunc (s *stringSlice) String() string {    return fmt.Sprint(*s)}func (s *stringSlice) Set(v string) error {    *s = append(*s, v)    return nil}func main() {    var s stringSlice    flag.Var(&s, "foo", "append a foo to the list")    flag.Var(&s, "foo2", "append a `foo` to the list")    flag.Parse()}运行 with-h显示参数名称如何变化:Usage of ./flagusage:  -foo value        append a foo to the list  -foo2 foo        append a foo to the list
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go