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