go-Cobra PersistentFlags 和 Flags 有什么区别?
What is the difference between go-Cobra PersistentFlags and Flags?
我想弄清楚 go-Cobra 中的 PersistentFlags 和 Flags 之间有什么区别,我们应该在什么时候使用它们。
我读过 this 但我没看懂。
使用 Cobra 时,您定义了一个顶级命令:
prog
此顶级命令有 sub-commands。例如,假设我们有三个 sub-commands、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
,所以我们在init
子命令中添加一个-i
标志。
-q
标志仅用于start
,所以我们在start
子命令中添加一个-q
标志,依此类推。
现在我们想为每个命令添加调试模式。我们可以进入每个命令并添加一个 --debug
标志……但我们也可以只为根命令设置一个 persistent 标志。此永久标志现在将在 every sub-command.
中可用
如果您的 sub-command 有子 sub-commands,您可以在 sub-command 中设置一个永久标志,使该标志出现在每个子 sub-command 中],等等。
我想弄清楚 go-Cobra 中的 PersistentFlags 和 Flags 之间有什么区别,我们应该在什么时候使用它们。 我读过 this 但我没看懂。
使用 Cobra 时,您定义了一个顶级命令:
prog
此顶级命令有 sub-commands。例如,假设我们有三个 sub-commands、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
,所以我们在init
子命令中添加一个-i
标志。
-q
标志仅用于start
,所以我们在start
子命令中添加一个-q
标志,依此类推。
现在我们想为每个命令添加调试模式。我们可以进入每个命令并添加一个 --debug
标志……但我们也可以只为根命令设置一个 persistent 标志。此永久标志现在将在 every sub-command.
如果您的 sub-command 有子 sub-commands,您可以在 sub-command 中设置一个永久标志,使该标志出现在每个子 sub-command 中],等等。