go Cobra PersistentFlags和Flags之间有什么区别



我正试图弄清楚go Cobra中PersistentFlags和Flags之间的区别,以及我们应该在什么时候使用它们。我读过这个,但我不明白。

使用Cobra时,您定义了一个顶级命令:

prog

此顶级命令包含子命令。例如,假设我们有三个子命令,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,因此我们将-i标志添加到init子命令中。

-q标志仅用于start,因此我们将-q标志添加到start子命令中,依此类推

现在,我们想为每个命令添加一个调试模式。我们可以进入每个命令并添加一个--debug标志。。。但是我们也可以为root命令设置一个persistent标志。现在,每个子命令中都可以使用此持久标志。

如果您有一个包含子子命令的子命令,您可以在子命令中设置一个持久标志,使该标志出现在每个子命令中,依此类推

Flags返回应用于此命令的完整FlagSet(在此处和由所有父级声明的本地和持久性(。

PersistentFlags返回在当前命令中专门设置的持久FlagSet。

相关内容

  • 没有找到相关文章

最新更新