Go语言 你能在Cobra中为一个标志指定可选的参数吗?

z9ju0rcb  于 2023-03-10  发布在  Go
关注(0)|答案(1)|浏览(119)

假设我的程序中有一个只打印正数的标志:
c.PersistentFlags().IntVar(&SomeFlag, optionSomeFlag, 0, "do something (range: x-y)")
默认值是0,所以如果用户不切换标志,什么也不打印。我怎样才能使标志接受参数,但有一个默认值本身?例如,如果默认值是5
./program --someflag输出将为5
但如果我知道
./program --someflag=1输出将为1
我试着按照Cobra的用户指南操作,并期待一种命令类型,它只允许我在用户触发标志时指定默认值,而不是完全触发。我可能误解了这一点,或者错过了一些东西。

qoefvg9y

qoefvg9y1#

我计划通过自己解析os.Args[1:]来查找没有参数的标志,并将默认值插入到参数的修改副本中,然后将修改副本传递给rootCommand.SetArgs,从而解决这个限制。
这感觉有点古怪,很难维持,但我看不到其他的解决办法。

相关问题