![](/img/trans.png)
[英]What is the difference between StringVar vs StringVarP or String vs StringP when using Go (golang), cobra and viper?
[英]What is the difference between go-Cobra PersistentFlags and Flags?
使用 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
子命令,依此类推。
现在我们想为每个命令添加一个调试模式。 我们可以在每个命令中添加 go 并添加一个--debug
标志......但我们也可以为根命令设置一个持久标志。 这个持久标志现在将在每个子命令中可用。
如果您有一个包含子子命令的子命令,则可以在子命令中设置一个持久标志,以使该标志出现在每个子子命令中,依此类推。
Flags返回适用于此命令的完整 FlagSet(在此处和所有父级声明的本地和持久性)。
PersistentFlags返回当前命令中专门设置的持久化标志集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.