首先定义version和help标志,再通过flag.Parse()解析;编译时用-ldflags注入版本信息,运行时根据标志输出对应内容。

为你的Golang命令行工具添加版本号和帮助信息,能显著提升用户体验。用户可以通过
--version查看程序版本,通过
--help快速了解用法。实现这些功能不需要第三方库,标准库
flag就足够了。
使用 flag 包定义版本和帮助标志
在
main函数中,你可以用
flag.Bool声明
version和
help两个布尔型标志:
var versionFlag = flag.Bool("version", false, "显示程序版本")
var helpFlag = flag.Bool("help", false, "显示帮助信息")
调用
flag.Parse()解析命令行参数后,检查这两个标志的值,做出相应输出。
嵌入编译时版本信息
直接在代码中写死版本号不够灵活。推荐在编译时通过
-ldflags注入版本信息。例如:
立即学习“go语言免费学习笔记(深入)”;
go build -ldflags "-X main.version=1.0.0 -X main.commit=abc123 -X main.date=$(date -u +%Y-%m-%d)"
为此,你需要在代码中定义变量:
var (
version = "dev"
commit = "none"
date = "unknown"
)
这样在运行时就能输出完整的版本详情。
输出版本和帮助信息
解析标志后,加入逻辑分支:
if *versionFlag {
fmt.Printf("版本: %s\n", version)
fmt.Printf("提交: %s\n", commit)
fmt.Printf("构建时间: %s\n", date)
os.Exit(0)
}
if *helpFlag {
fmt.Println("用法: your-tool [选项]")
fmt.Println("选项:")
flag.PrintDefaults()
os.Exit(0)
}
flag.PrintDefaults()会自动打印所有已定义标志的说明,保持帮助信息与代码同步。
基本上就这些。只要定义标志、注入版本、输出信息,你的命令行工具就会显得专业又实用。不复杂但容易忽略细节。










