Golang编译时修改变量值
场景 #
golang在编译时,修改指定包内变量的值,常用于输出版本信息。
代码 #
main包变量 #
package main
import "fmt"
var version string
func main() {
fmt.Println(version)
}
编译时修改变量version
的值为123
go build -ldflags "-X main.version=123" main.go
其它包变量 #
如果需要修改子包变量或其它包变量,则需要带上import
中的地址,即引用地址
如
package main
import (
"fmt"
"csz.net/goForward/conf"
)
func main() {
fmt.Println(conf.Version)
}
编译时修改则为
go build -ldflags "-X csz.net/goForward/conf.Version=123"
搭配Github Action使用 #
在编译时,可以设置tags
为版本号
go build -ldflags "-X main.version=${GITHUB_REF/refs\/tags\//}" -o main.go
其中${GITHUB_REF/refs\/tags\//}
代表当前Github Action的tags