Go程序在编译期指定包中的变量值
Go 语言编译时,可以通过 -ldflags
的方式,为指定包中的变量赋值。
格式
$ go build -ldflags "-X '$包名.变量名=$变量值'"
示例
文件结构
.
|-- go.mod
|-- go.sum
|-- main.go
`-- version
`-- version.go
go.mod
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
package main
import (
"app/testing/version"
log "github.com/sirupsen/logrus"
)
func init() {
log.SetFormatter(
&log.TextFormatter{
FullTimestamp: true,
},
)
}
func main() {
version.ShowVersion()
}
version/version.go
package version
import "fmt"
//Version app version
var Version string
//ShowVersion output current version
func ShowVersion() {
fmt.Println("version: " + Version)
}
编译与运行
$ go build -ldflags "-X 'app/testing/version.Version=1.0.0'"
$ ./testing.exe
version: 1.0.0