为了账号安全,请及时绑定邮箱和手机立即绑定

Go Flag 用法说明 包含 Word 值

Go Flag 用法说明 包含 Word 值

Go
海绵宝宝撒 2022-11-28 14:52:27
我已经定义了一个自定义标志来接受这样的字符串片段:type strSliceFlag []stringfunc (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是从哪里来的?我找不到如何删除它。我认为这可能与标志的默认值有关。
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

valueflag.UnquoteUsage为自定义类型(通过 呈现flag.(*FlagSet).PrintDefaults)选择的默认参数名称。

您可以在使用文本中使用反引号覆盖默认值。反引号从使用文本中删除。例如:

package main


import (

    "flag"

    "fmt"

)


type stringSlice []string


func (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


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信