登录
首页 >  Golang >  Go问答

指南:如何正确使用 Go 标志符号

来源:stackoverflow

时间:2024-02-28 15:45:24 428浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《指南:如何正确使用 Go 标志符号》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我定义了一个自定义标志来接受字符串切片:

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()
    ...

当我构建此程序并使用帮助标志运行它时:main -h,它打印出:

Usage of main:
  -t value
        Test explanation

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


正确答案


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()
}

使用 -h 运行会显示参数名称如何更改:

Usage of ./flagusage:
  -foo value
        append a foo to the list
  -foo2 foo
        append a foo to the list

到这里,我们也就讲完了《指南:如何正确使用 Go 标志符号》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>