22 | 应用构建三剑客:Pflag、Viper、Cobra 核心功能介绍
该思维导图由 AI 生成,仅供参考
如何构建应用框架
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了Go语言应用构建中常用的Pflag、Viper和Cobra三个包的使用方法。首先强调了构建应用框架的重要性,包括命令行参数解析、配置文件解析和应用的命令行框架。重点介绍了Pflag包的使用方法,包括支持多种命令行参数定义方式、获取参数的值、获取非选项参数等。此外,还介绍了Viper包作为配置解析神器的重要性,以及Viper的配置读入和读取功能。文章通过详细的代码示例和解释,使读者能够快速了解这些包的核心功能和使用方式。总的来说,本文为Go语言应用开发者提供了宝贵的工具和技术指导,帮助他们更高效地构建应用程序。文章还介绍了Cobra作为一个现代化的命令行框架,提供了创建命令、添加标志等功能。通过对Cobra的介绍,读者可以了解如何使用Cobra库创建命令,以及如何使用标志和绑定到Viper等功能。整体而言,本文内容丰富,适合Go语言开发者学习和应用。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(17)
- 最新
- 精选
- Sch0ng使用Pflag解析命令行参数,使用Viper解析配置文件,使用Cobra实现命令行框架。 复用优秀轮子省时省力。
作者回复: 老哥,学的好认真呀,给点个赞!
2021-08-1213 - 党总结一下: 1:cobra = flag+启动流程管理 2: viper读取配置文件+flag参数 最后 反序列化出来一个配置struct实例 ps 最终代码里没有pflag包的事
作者回复: 6666
2022-01-277 - 宙斯有个疑问:flag和非选项参数数什么关系呢?
作者回复: 比如:./iam-apiserver -c /etc/iam/iam-apiserver.yaml -c是flag。 /etc/iam/iam-apiserver是非选项参数。
2021-07-2727 - 龍捲風想问下,关于golang的项目怎么实现优雅下线?注册中心可以将服务节点剔除,但关闭服务时怎么让已接收到请求可以做完呢?
作者回复: net/http包有提供ShutDown方法。 第24讲:Web 服务:Web 服务核心功能有哪些,如何实现?有讲如何实现优雅关停。
2021-07-164 - Geek_8efe79全是文字看着好心累,没有视频?
作者回复: 后面考虑出个视频课程
2022-04-183 - helloworld开发环境,测试环境,生产环境的配置文件是不同的,关于不同环境下读取配置文件,这块有什么好的最佳实践吗,是通过命令行参数指定不同环境的配置文件的方式好呢,还是通过系统环境变量来区分环境并读取对应配置文件好呢
作者回复: 如果参数少,比如< 5个,可以在命令行参数指定。 如果参数 >=5个,最好在配置文件指定,好维护。 注意:5 不是标准答案,需要你来定。
2021-07-1632 - Neroldy标志可以是“持久的”,这意味着该标志可用于它所分配的命令以及该命令下的每个子命令。 老师能再具体讲讲这个标志的持久化是什么意思吗?
作者回复: 就是如果一个标志是“持久的”,那么子命令也可以使用父命令的标志。
2021-07-152 - 我要去卖冰淇淋老师我有个疑问.例如 我现在要在别的方法中引用yaml中配置的变量,但在代码中我没有发现global存配置文件的信息,难道只能 1。自己声明一个全局了存储,2 直接用 viper.GetString("xxx.xxx") 方式。 我在观察代码的时候 发现所有的初始化信息基本上都是在 启动之初处理好了。
作者回复: 这个地方是个取舍,没有标准答案,完全可以根据自己的需求来; 建议变量都在初始化中,通过参数的方式进行传递,因为这样能做到有感知。但可能每次都加一个参数传递,觉得麻烦,也完全可以搞个全局变量,问题不大的。
2022-10-27归属地:广东21 - czyViper读取配置部分第2种方法反序列化两个示例解释的很不清楚,过于晦涩了,不如用一个简单的例子,这两个例子是官方上的,就直接翻译搬过来了吧?也没有加一些解析。
作者回复: 感谢反馈,我优化下
2022-08-29归属地:广东 - 雪峰viper在容器中无法watch
作者回复: 可以watch,需要改下文件的软连接。容器中,文件路径跟真实的路径不一样,具体你可以网上搜索,然后尝试下。
2022-08-24归属地:广东