Golang标志:忽略丢失的标志并解析多个重复的标志

时间:2017-08-03 14:38:07

标签: go go-flag

我是Golang的新手,我无法使用flag找到解决此问题的方法。

我如何使用标志,以便我的程序可以处理这些调用,其中-term标志可能存在可变次数,包括0次:

./myprogram -f flag1
./myprogram -f flag1 -term t1 -term t2 -term  t3

1 个答案:

答案 0 :(得分:4)

您需要声明自己的实现Value接口的类型。这是一个例子。

// Created so that multiple inputs can be accecpted
type arrayFlags []string

func (i *arrayFlags) String() string {
    // change this, this is just can example to satisfy the interface
    return "my string representation"
}

func (i *arrayFlags) Set(value string) error {
    *i = append(*i, strings.TrimSpace(value))
    return nil
}

然后在解析标志的主函数中

var myFlags arrayFlags

flag.Var(&myFlags, "term", "my terms")
flag.Parse()

现在所有条款都包含在切片myFlags