..
golang添加编译版本信息
在很多程序中,我们都能看到编译的版本信息
[jukay@mac-pro]~/Code/Go/src/github.com/hellojukay/test$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
这里的版本信息应该不是在代码里面写死的,而是在编译过程中动态生成。这里介绍一下golang怎么在编译时候加上版本信息,我们的代码如下:
package main
import (
"flag"
)
var version string
func init() {
var printVersion bool
flag.BoolVar(&printVersion, "version", false, "print program build version")
if !flag.Parsed() {
flag.Parse()
}
if printVersion {
println(version)
}
}
func main() {
}
编译时期注入main包的version变量的值
mac-pro:test jukay$ go build -ldflags "-X main.version=v1.0" main.go
mac-pro:test jukay$ ./main --version
v1.0
mac-pro:test jukay$
这里 ./main --version
等价于./main --version=true