1、使用编译参数-ldflags
可以将参数值赋值到某一个包中的变量
go
var version string
fmt.Println("version: " + version)
编译:go build -ldflags="-X 'voteapi/app/health/http/server.version=1.0.0'"
如果你使用了模块(module),请确保导入路径正确,也就是使用完整路径,如果路径不对,它也不会报错。
使用单引号包裹整个 -X
参数可以避免空格问题。
可以赋值多个参数:-X 'main.version=1.0.0' -X 'main.buildTime=2025-06-19'
可以使用环境变量:-X 'main.version=$VERSION' -X 'main.buildTime=$BUILDTIME'
2、go generate指令
生成随机字符串:openssl rand -base64 16
获取git版本号:git describe --tags
最终指令如下
//go:generate sh -c "echo 'package main' > version.go && echo \"var version = \\\"$(openssl rand -base64 16)\\\"\" >> version.go"
需要手动执行go generate
,生成的version.go
文件
go
package main
var version = "0Mh+gzfOKyIMpDB5m8sEsA=="