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

Go基础(③Cobra)

Cobra 是帮你快速开发命令行工具的框架

假设你想做一个叫 todo 的命令行工具,实现这些功能:

todo add "买牛奶" → 添加待办
todo list → 查看所有待办
todo done 1 → 标记第 1 个待办为已完成

没有 Cobra 的话,你需要自己写代码判断用户输入的是 add 还是 list,还要解析后面的参数,非常麻烦。

用 Cobra 的话,你只需要:

定义 add、list、done 这三个子命令
给每个命令写好具体执行逻辑
剩下的「解析用户输入」「判断执行哪个命令」「生成帮助信息(如 todo --help)」这些事,Cobra 全帮你做了

创建项目

mkdir cobra-demo && cd cobra-demo
go mod init cobra-demo# 安装 Cobra 库
go get github.com/spf13/cobra@latest# 安装 Cobra 命令行生成工具(可选,用于快速创建项目结构)
go install github.com/spf13/cobra-cli@latest# 用 cobra-cli 初始化项目(会生成基本结构)
cobra-cli init

初始化后,项目结构如下

cobra-demo/
├── cmd/
│   └── root.go   # 根命令定义
├── go.mod
├── go.sum
└── main.go       # 程序入口

add.go代码

package cmdimport ("fmt""strconv""github.com/spf13/cobra"
)// 定义 add 命令
var addCmd = &cobra.Command{Use:   "add",                               // 命令名称(使用方式:app add)Short: "将两个数字相加",                    // 短描述(帮助信息中显示)Long:  `将两个整数相加并打印结果。`,          // 长描述Args:  cobra.ExactArgs(2),                  // 必须传入 2 个参数Run: func(cmd *cobra.Command, args []string) {// 解析参数(字符串转整数)a, err := strconv.Atoi(args[0])if err != nil {fmt.Println("第一个参数必须是整数")return}b, err := strconv.Atoi(args[1])if err != nil {fmt.Println("第二个参数必须是整数")return}// 执行加法并输出结果fmt.Printf("%d + %d = %d\n", a, b, a+b)},
}// 初始化函数:将 add 命令添加到根命令
func init() {rootCmd.AddCommand(addCmd)
}

然后把add.go放入cmd文件夹,然后运行

go build -o calc.exe

123

http://www.xdnf.cn/news/1477297.html

相关文章:

  • STM32——Flash闪存
  • 自动化运维,ansible综合测试练习题
  • Ceph分布式存储全解析:从了解到使用
  • 新能源研发,用新型实验记录本:ELN
  • 006-Dephi 表达式 选择语句 循环语句其他语句
  • k8s网络原理
  • Qt自定义列表项与QListWidget学习
  • PID控制技术深度剖析:从基础原理到高级应用(六)
  • LeetCode 刷题【66. 加一、67. 二进制求和】
  • Linux bzip2 命令使用说明
  • 大数据毕业设计选题推荐-基于大数据的宫颈癌风险因素分析与可视化系统-Spark-Hadoop-Bigdata
  • Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
  • 学习nginx location ~ .*.(js|css)?$语法规则
  • Error metrics for skewed datasets|倾斜数据集的误差指标
  • 区块链论坛社区
  • 在 ES6 中如何提取深度嵌套的对象中的指定属性
  • 【111】基于51单片机停车场车位管理系统【Proteus仿真+Keil程序+报告+原理图】
  • 从RAW到BMP:工业视觉系统图像格式的转换与优化
  • 数据结构之二叉树(1)
  • STM32-----SPI
  • JUC、JVM八股补充
  • YOLOv8 在 Intel Mac 上的 Anaconda 一键安装教程
  • JBoltAI:赋能AI数智化升级的Java级引擎——深入解析企业级AI开发框架的核心能力与行业价值
  • 待定系数法分解分式
  • 后端(JDBC)学习笔记(CLASS 1):基础篇(一)
  • VBA之Excel应用第四章第七节:单元格区域的整行或整列扩展
  • 进阶向:密码生成与管理工具
  • 【PCIe EP 设备入门学习专栏 -- 8.1.3 PCIe EP AXI Bridge Module】
  • 发布vue项目、nginx配置及问题场景(history)
  • 服务器内存和普通计算机内存在技术方面有什么区别?