我正在尝试构建一个CLI,我期望一组三个参数一起出现。
command --alpha "value-a" --bravo "value-b" --charlie "value-c"
这就是我试图这样做的方式:
import (
"github.com/spf13/pflag"
)
var (
alpha string
bravo string
charlie string
)
abcFlagSet := pflag.NewFlagSet("alpha", pflag.ContinueOnError)
abcFlagSet.StringVar(&bravo, "bravo", "", "bravo-description")
abcFlagSet.StringVar(&charlie, "charlie", "", "charlie-description")
cmd.Flags().AddFlagSet(abcFlagSet)
这正确识别bravo
和charlie
标志。但是,我认为它将alpha
视为command
的子命令,并不解析分配给它的值,即value-a
。 FlagSet
是否适用于此用例?我应该如何解析这三个参数可以一起出现或者根本不出现的场景?
https://github.com/spf13/pflag/blob/298182f68c66c05229eb03ac171abe6e309ee79a/flag.go#L1202-L1213,正如在这里所说,你正在形成一个名为FlagSet
的alpha
。显然,您的代码不会将其视为标志。定义名为alpha
的新标志的正确方法是
abcFlagSet.StringVar(&alpha, "alpha", "", "alpha-description")
。