当前位置: 首页 > news >正文

Go语言使用cobra开发第一个命令行程序

源码下载

本教程源码下载地址:https://github.com/zhangdapeng520/zdpgo_cobra_examples

案例说明

实现一个简单的命令行程序,能够将输入的单词转换为大写。

使用演示

执行命令:

go run .\main.go word -u -s hello

输出结果:

在这里插入图片描述

完整代码

main.go

package mainimport ("github.com/zhangdapeng520/zdpgo_cobra_examples/word/cmd""log"
)func main() {if err := cmd.Execute(); err != nil {log.Fatalf("cmd.Execute() error(%v)", err)}
}

cmd/root.go

package cmdimport "github.com/zhangdapeng520/zdpgo_cobra"var rootCmd = &zdpgo_cobra.Command{}func Execute() error {return rootCmd.Execute()
}func init() {rootCmd.AddCommand(wordCmd)
}

cmd/word.go

核心代码都在这个里面。

package cmdimport ("fmt""github.com/zhangdapeng520/zdpgo_cobra""strings"
)var (str     string // 传入的字符串isUpper bool   // 转换为大小
)func init() {wordCmd.Flags().StringVarP(&str, "str", "s", "", "请输入单词内容")wordCmd.Flags().BoolVarP(&isUpper, "upper", "u", false, "是否转换为大写")
}var wordCmd = &zdpgo_cobra.Command{Use:   "word",Short: "单词格式转换",Long:  "支持多种单词格式转换",Run: func(cmd *zdpgo_cobra.Command, args []string) {// 这个是运行子命令会直接触发的函数if isUpper {fmt.Println(strings.ToUpper(str))}},
}

相关文章:

  • 【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景
  • The C programming language (second edition,KR) exercise(CHAPTER 7)
  • 苹果手机清理软件:让你的iPhone保持最佳状态
  • JavaScript前端面试题——fetch
  • 上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌
  • 技术汇总笔记7:switch 嵌套用法 和 改进 (条件分支相关内容)
  • Excel文件处理excel内容
  • FastAPI技巧
  • HTML-03.新浪新闻-标题-样式2
  • Arco Design 之Table表格
  • 【医学影像】无痛安装mamba
  • 字节实习面试
  • 【Qt】如何搭建Qt开发环境
  • C# Deconstruct详解
  • 安卓App开发 篇一:从零开始构建第一个Android应用
  • 「译」Node.js Streams 基础
  • Android单元测试 - 几个重要问题
  • IOS评论框不贴底(ios12新bug)
  • Java Agent 学习笔记
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascripit类型转换比较那点事儿,双等号(==)
  • mysql 5.6 原生Online DDL解析
  • ng6--错误信息小结(持续更新)
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue脚手架vue-cli
  • 关于springcloud Gateway中的限流
  • 每天一个设计模式之命令模式
  • 那些被忽略的 JavaScript 数组方法细节
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 学习使用ExpressJS 4.0中的新Router
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 主流的CSS水平和垂直居中技术大全
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .NET Core 中插件式开发实现
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .netcore如何运行环境安装到Linux服务器
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net网站发布-允许更新此预编译站点
  • .NET未来路在何方?