我试图弄清楚 Go-Cobra 中 PersistentFlags 和 Flags 之间的区别是什么,以及我们应该何时使用它们中的每一个。我读过这个,但我不明白。
问问题
3324 次
1 回答
19
使用 Cobra 时,您定义了一个顶级命令:
prog
这个顶级命令有子命令。例如,假设我们有三个子命令init
、start
和stop
。
prog init [-i] # initialize, but don't start anything: -i means ignore
prog start [-f] [-q] # after init, start: -f=fast, -q=quiet
prog stop [-f] # stop: -f=force
该-i
标志仅用于init
,因此我们-i
在子命令中添加一个标志init
。
该-q
标志仅用于start
,因此我们-q
在子命令中添加一个标志start
,依此类推。
现在我们想为每个命令添加一个调试模式。我们可以进入每个命令并添加一个--debug
标志......但我们也可以为根命令设置一个持久标志。这个持久标志现在将在每个子命令中可用。
如果您有一个包含子子命令的子命令,则可以在子命令中设置一个持久标志,以使该标志出现在每个子子命令中,依此类推。
于 2020-08-20T04:48:53.303 回答