使用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 库就是 Go 语言中最流行的一个 CLI 框架,它能帮你快速构建出结构清晰、支持子命令的命令行程序。

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

首先,你需要安装 cobra 这个库。打开终端,运行:
立即学习“go语言免费学习笔记(深入)”;
go get -u github.com/spf13/cobra/cobra
这个命令会把 cobra 的命令行工具也装好,之后你就可以用
cobra

安装完成后,你可以输入
cobra --help
接下来我们创建一个目录,比如叫
mycli
mkdir mycli && cd mycli cobra init
执行完后,你会看到项目里多了几个文件和目录,比如
main.go
cmd/root.go
你可以先运行一下看看效果:
go run main.go
默认情况下会输出 root 命令的帮助信息,类似这样:
A longer description that spans multiple lines and likely contains examples and usage of using your application.
别担心,这只是个模板,后面我们会改掉它。
现在我们来加一个自己的命令,比如
sayhello
用下面这行命令生成一个新命令:
cobra add sayhello
这时候会在
cmd/
sayhello.go
Run
func runSayhello(cmd *cobra.Command, args []string) {
fmt.Println("Hello from CLI!")
}保存后运行:
go run main.go sayhello
你应该就能看到输出了:
Hello from CLI!
CLI 工具光有命令还不够,通常还需要传参。我们继续在
sayhello
mycli sayhello --name Alice
输出:
Hello, Alice!
要实现这个功能,先在
init()
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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号