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、initstartstop.

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 中],等等。