首页 > 后端开发 > Golang > 正文

如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践

P粉602998670
发布: 2025-08-02 09:33:02
原创
803人浏览过

使用golang和cobra库可以快速构建结构清晰的cli工具。首先安装cobra库,运行go get -u github.com/spf13/cobra/cobra;其次创建项目目录并初始化,用cobra init生成基础结构;接着通过cobra add sayhello添加子命令,并在run函数中实现功能逻辑;随后可在init()中定义flag以支持参数传递;最后运行go build将程序编译为可执行文件并部署到系统路径。以上步骤即可完成一个具备基本功能的cli工具开发。

如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践

用 Golang 编写 CLI 工具其实挺常见的,尤其是当你想做一些自动化脚本或者小型命令行应用的时候。而 cobra 库就是 Go 语言中最流行的一个 CLI 框架,它能帮你快速构建出结构清晰、支持子命令的命令行程序。

如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践

下面我们就一步步来实践一下,怎么用 cobra 写一个简单的 CLI 工具。

如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践

安装 Cobra

首先,你需要安装 cobra 这个库。打开终端,运行:

立即学习go语言免费学习笔记(深入)”;

go get -u github.com/spf13/cobra/cobra
登录后复制

这个命令会把 cobra 的命令行工具也装好,之后你就可以用

cobra
登录后复制
命令来生成项目骨架了。

如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践

安装完成后,你可以输入

cobra --help
登录后复制
看看有没有输出帮助信息,确认是否安装成功。


初始化你的 CLI 项目

接下来我们创建一个目录,比如叫

mycli
登录后复制
,然后进去初始化一个 Cobra 项目:

mkdir mycli && cd mycli
cobra init
登录后复制

执行完后,你会看到项目里多了几个文件和目录,比如

main.go
登录后复制
cmd/root.go
登录后复制
。这些是 cobra 自动生成的基础结构。

你可以先运行一下看看效果:

go run main.go
登录后复制

默认情况下会输出 root 命令的帮助信息,类似这样:

A longer description that spans multiple lines and likely contains
examples and usage of using your application.
登录后复制

别担心,这只是个模板,后面我们会改掉它。


添加一个子命令:sayhello

现在我们来加一个自己的命令,比如

sayhello
登录后复制
,运行它时打印一句“Hello from CLI!”。

用下面这行命令生成一个新命令:

cobra add sayhello
登录后复制

这时候会在

cmd/
登录后复制
目录下多一个
sayhello.go
登录后复制
文件。打开它,找到
Run
登录后复制
函数,在里面加上我们要输出的内容:

课游记AI
课游记AI

AI原生学习产品

课游记AI 86
查看详情 课游记AI
func runSayhello(cmd *cobra.Command, args []string) {
    fmt.Println("Hello from CLI!")
}
登录后复制

保存后运行:

go run main.go sayhello
登录后复制

你应该就能看到输出了:

Hello from CLI!
登录后复制

给命令添加参数和 Flag

CLI 工具光有命令还不够,通常还需要传参。我们继续在

sayhello
登录后复制
上扩展,让它支持一个名字参数,比如:

mycli sayhello --name Alice
登录后复制

输出:

Hello, Alice!
登录后复制

要实现这个功能,先在

init()
登录后复制
函数里定义 flag:

var name string

func init() {
    cmd := sayhelloCmd
    cmd.Flags().StringVarP(&name, "name", "n", "World", "Name to greet")
}
登录后复制

然后修改

runSayhello
登录后复制
函数:

func runSayhello(cmd *cobra.Command, args []string) {
    fmt.Printf("Hello, %s!\n", name)
}
登录后复制

现在再运行:

go run main.go sayhello --name Bob
登录后复制

就会输出:

Hello, Bob!
登录后复制

如果你不带参数,默认是

World
登录后复制


构建可执行文件

写好了命令,下一步就是把它打包成一个真正的命令行程序。很简单,只需要运行:

go build -o mycli
登录后复制

之后你就能直接运行:

./mycli sayhello --name Tom
登录后复制

也可以把这个二进制文件放到系统路径里,比如

/usr/local/bin/
登录后复制
,以后就不用带
./
登录后复制
了。


基本上就这些。cobra 的功能还有很多,比如自动补全、配置管理、嵌套命令等,但上面这几步已经足够让你写出一个像样的 CLI 工具了。用起来不复杂,但确实很实用。

以上就是如何用Golang编写第一个CLI工具 详解cobra库的快速入门实践的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号