我是Golang的新手,我无法使用flag找到解决此问题的方法。
我如何使用标志,以便我的程序可以处理这些调用,其中-term标志可能存在可变次数,包括0次:
./myprogram -f flag1
./myprogram -f flag1 -term t1 -term t2 -term t3
答案 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