新闻详情

新闻详情

首页 / 资讯中心 / 详情

Go 用 cobra / viper 写 CLI 工具:从单文件到企业级

发布时间:2026/9/29 6:51:12来源:尧图网络
Go 用 cobra / viper 写 CLI 工具:从单文件到企业级
Go 用 cobra / viper 写 CLI 工具从单文件到企业级Go 后端工程师也常用 CLI 工具从 kubectl 到 drpc-toolsCLI 框架的基石是 cobra viper。本文从 0 到 1 教你看示例写 CLI。一、最简单 cobragoinstallgithub.com/spf13/cobra-clilatest cobra init mycli二、main.gopackagemainfuncmain(){cmd.Execute()}三、cmd/root.goimportgithub.com/spf13/cobravarrootCmdcobra.Command{Use:mycli,Short:工具,Run:func(cmd*cobra.Command,args[]string){fmt.Println(mycli)},}funcExecute(){iferr:rootCmd.Execute();err!nil{os.Exit(1)}}四、添加子命令varlistCmdcobra.Command{Use:list,Run:func(cmd*cobra.Command,args[]string){fmt.Println(list)},}funcinit(){rootCmd.AddCommand(listCmd)}五、flagsvarverboseboolfuncinit(){listCmd.Flags().BoolVarP(verbose,verbose,v,false,verbose)}六、viper 集成importgithub.com/spf13/viperfuncinit(){viper.AddConfigPath(.)viper.SetConfigName(config)viper.SetEnvPrefix(MYCLI)viper.AutomaticEnv()}funccmd(){host:viper.GetString(database.host)}七、user promptreader:bufio.NewReader(os.Stdin)name,_:reader.ReadString(\n)八、TUI 进阶bubbleteaimportgithub.com/charmbracelet/bubbleteatypeModelstruct{}func(m Model)Init()tea.Cmd{returnnil}func(m Model)Update(msg tea.Msg)(tea.Model,tea.Cmd){returnm,nil}func(m Model)View()string{returnhello}funcmain(){tea.NewProgram(Model{}).Run()}九、发布 CLI 工具go build-omycli分发HomeBrewScoopWindowsNix十、踩坑清单viper.Get 永远返回 stringnil 时 “”注意类型subcommand 自定义 ValidArgsSet影响 zsh 自动补全panic with recoverCLI 是单进程崩了就退出十一、生产实战DRPC CLIvarrpcCmdcobra.Command{Use:rpc,Run:func(cmd*cobra.Command,args[]string){url:viper.GetString(rpc.url)invoke(url)},}十二、Module 复用// internal/clifuncAddCommonFlags(c*cobra.Command){c.Flags().StringP(config,c,config.yaml,config path)}十三、测试importgithub.com/spf13/cobracmd.SetArgs([]string{list})cmd.Execute()十四、未来AI CLI Agent类似 OpenAI Operator、Anthropic Claude Code 都用 cobra-like 模式智能 CLI 工具会从命令推断意图。十五、总结与展望cobra viper 是 Go CLI 的标配。掌握它能快速开发 kubectl 系列级别的工具。未来Go Rust CLI 工具继续流行跨语言协作工具链进一步简化。十六、参考文献cobra 仓库viper 仓库
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从Word设计文档到可运行Java代码的落地指南 2026/9/29 7:42:48

从Word设计文档到可运行Java代码的落地指南

简介:本资源是一份面向计算机专业本科生及Java初学者的毕业设计类文档,聚焦外卖点餐系统的完整设计与实现过程,解决传统餐饮信息化程度低、点餐流程不透明、管理效率低下等实际问题。文档以B/S架构为背景,系统梳理了需求分析、功能…

阅读更多 →
镜像共享实战指南:从环境打包到发布使用全流程解析 2026/9/29 7:42:48

镜像共享实战指南:从环境打包到发布使用全流程解析

1. 镜像共享是什么,为什么值得用1.1 很多新手第一次听到“镜像共享”时的困惑智星云平台上的新手用户,刚接触“镜像共享”这个词时,第一反应往往是把它和“网盘分享文件”混为一谈。实际上,这里说的镜像,不是一张图片&…

阅读更多 →
Nginx反向代理与upstream负载均衡:从参数配置到502/504故障排查 2026/9/29 7:42:41

Nginx反向代理与upstream负载均衡:从参数配置到502/504故障排查

做 Web 服务的朋友,早晚都要跟 Nginx 反向代理打交道。upstream 模块负责定义一组后端服务器,配合 proxy_pass 指令,就能把请求按预定的策略分发到一台或多台机器上。我见过太多人只写了最简单的proxy_pass http://backend;,结果后…

阅读更多 →
固态硬盘优化不折腾指南:原理、关键设置与避坑经验 2026/9/29 7:42:41

固态硬盘优化不折腾指南:原理、关键设置与避坑经验

固态硬盘做优化这件事,我在不同时期反复折腾过好几轮。最早是机械盘时代过来的习惯,总想着碎片整理、清理垃圾、关这关那;后来换了固态,又有一段时间迷信各种“优化工具”和“跑分软件”。踩过不少坑之后,我现在的结论…

阅读更多 →
SuperClaude 配 TaoToken:settings.json 骨架与报错排查 2026/9/29 7:42:35

SuperClaude 配 TaoToken:settings.json 骨架与报错排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
INT8量化实战:从矩阵乘到LLM部署的精度与性能优化 2026/9/29 7:42:35

INT8量化实战:从矩阵乘到LLM部署的精度与性能优化

继续写部署优化系列,这期是量化。项目标题里挂的是“模型部署与推理优化02:量化原理与实践(INT8 矩阵乘、校准、QAT 与 LLM 量化)”,我尽量不写成教科书。前阵子有人问我“INT8 是不是把每个权重除以 255 再存一下”&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉