..
Go程序编译注入版本信息
- 编译注入全局变量
flags="-X 'main.goversion=$(go version)'"
go build -ldflags "$flags" -x -o build-version main.go
- Go的debug包可以自动注入版本信息
if version {
info, ok := debug.ReadBuildInfo()
if ok {
println(info.Main.Version, info.Main.Sum)
}
os.Exit(0)
}
这种方式有一定的局限性,本地编译的时候版本永远都是 (devel), 只有通过 go install 命令才能展示编译时候的 git tag 版本。