Go 语言编译时,可以通过 -ldflags
的方式,为指定包中的变量赋值。
格式
$ go build -ldflags "-X '$包名.变量名=$变量值'"
示例
文件结构
1 2 3 4 5 6
| . |-- go.mod |-- go.sum |-- main.go `-- version `-- version.go
|
go.mod
1 2 3 4 5 6 7 8 9
| module app/testing
go 1.13
require ( github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/sirupsen/logrus v1.4.2 golang.org/x/sys v0.0.0-20191010194322-b09406accb47 // indirect )
|
main.go
1 2 3 4 5 6 7 8 9
| package main
import ( "app/testing/version" )
func main() { version.ShowVersion() }
|
version/version.go
1 2 3 4 5 6 7 8 9 10 11 12
| package version
import "fmt"
var Version string
func ShowVersion() { fmt.Println("version: " + Version) }
|
编译与运行
1 2 3 4
| $ go build -ldflags "-X 'app/testing/version.Version=1.0.0'" // 或 go build -ldflags "-X 'version.Version=1.0.0'" $ ./testing.exe version: 1.0.0
|