为了账号安全,请及时绑定邮箱和手机立即绑定

在 Cobra Command 中不使用标志选项?

在 Cobra Command 中不使用标志选项?

Go
繁星coding 2023-01-03 10:15:49
我有一个带有默认选项的命令 - id。可能还有其他标志,因此可以调用以下任何一个。cmd 81313 # 81313 is the ID cmd -i 81313cmd -f foo.txt 81313 cmd -i 81313 -f foo.txt cmd 81313 -f foo.txt使用 Cobra 命令处理此问题的正确方法是什么?目前,我正在查看的值-i,如果它为空,则从中读取值cmdArgs(如果其中有内容,并且没有标志,那么我假设它是我的 ID)。然而,这似乎更容易出错——例如,如果有人放下 2 个 ID 会怎样。谢谢!
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我希望有一种更惯用的方式来完成

我认为有,这就是我试图在评论中传达的想法:不要提供多种方式来在命令行上指定相同的选项。

在位置参数与选项之间进行选择时,问题通常是“这个值是命令运行的对象吗?”。例如,像这样的命令rm对文件进行操作,因此文件被指定为位置参数:我们不需要写rm -f file1 -f file2 -f file3,等等。

同样,该ssh命令连接到远程主机,因此主机名是一个位置参数。有关该连接的元数据(要使用的身份、要使用的端口、配置选项等)也被指定为命令行选项。

你的问题有点难以回答,因为你还没有告诉我们你的命令实际上做了什么。如果每次调用都需要“id”,cmd并且它标识了命令操作的对象,那么您应该只将它设为位置参数:

cmd 81313

如果在某些情况下您不需要指定 ID,那么它应该是一个可选参数:

cmd -i 81313

在某些情况下,您可能有“强制性选择”,但这种情况相对较少。


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信