登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-07 17:18:38 355浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《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 标志...但我们也可以为根命令设置一个持久标志。现在,每个子命令中都可以使用此持久标志。

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

flags 返回适用于此命令的完整 flagset(本地和持久声明,并由所有父级声明)。

percientflags返回当前命令中专门设置的持久flagset。

本篇关于《go-Cobra PersistentFlags 和 Flags 之间有什么区别?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>