输入go help build,可以看到一个配置项: -ldflags 'flag list' arguments to pass on each go tool link invocation. 这个参数是用来设置go link(静态链接)的一些参数,具体有哪些参数可以通过go tool link --help查看。 其中-X参数可以在编译时给包内的变量赋值,然后我们利用flag包设置version参数就能实现打印版本...
GO_VERSION string ) func main() { fmt.Printf("%s\n%s\n%s\n", VERSION, BUILD_TIME, GO_VERSION) } 用如下命令编译,注意因为date和go version的输出有空格,所以main.BUILD_TIME和main.GO_VERSION必须使用引号括起来 go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X ...
GO_VERSION string ) func main() { fmt.Printf("%s\n%s\n%s\n", VERSION, BUILD_TIME, GO_VERSION) } 用如下命令编译,注意因为date和go version的输出有空格,所以main.BUILD_TIME和main.GO_VERSION必须使用引号括起来 go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X ...
mkdir -p bin/ && VERSION=$(git describe --tags --always) && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./... 这种多条命令,使用&&符号拼接起来,不易于维护,通常我们将它写在shell脚本里或者Makefile中,这不是我们本文讨论重点,下面以Makefile为例 VERSION=$(shell git describe ...
GO111MODULE=off go test -ldflags="-X 'gotest.time=`date`' -X gotest.version=1.0.1" gotest -v === RUN TestBuild TestBuild: go_test.go:9: 2020年 8月 9日 星期日 18时57分49秒 CST TestBuild: go_test.go:10: 1.0.1 --- PASS: TestBuild (0.00s) ...
package version // 变量通过-ldflags -X importpath.name=value在编译时传入程序中 var ( gitTag = "" // gitBranch = "" gitCommit = "$Format:%H$" gitTreeState = "not a git tree" buildDate = "1970-01-01T00:00:00Z" ) 1.
fmt.Printf("Version:[%s]\n", VERSION) } 编译时传入变量: $ go build -ldflags "-X main.VERSION=v1.0.0-alpha1" main.go $ ./main Version:[v1.0.0-alpha1] 最终样例 如果我们直接在项目入口文件处埋入版本信息, 对项目入口侵入太大, 因此你会看到一些好的开源项目下都有一个专门的version包, 由...
$ go run -ldflags "-X 'main.version=0.1' -X 'main.buildTime=2020-06-26' -X 'main.osArch=darwin/amd64'" main.go Version: 0.1 Built: 2020-06-26 OS/Arch: darwin/amd64 # 使用参数编译到二进制程序中 $ go build -ldflags "-X 'main.version=0.1' -X 'main.buildTime=2020-06-26'...
GO_VERSION=$(go version) CGO_ENABLED=0 go build -a -installsuffix cgo -v -mod=vendor \ -ldflags"-s -X 'main.AppName=${APP_NAME}' \ -X 'main.AppVersion=${APP_VERSION}' \ -X 'main.BuildVersion=${BUILD_VERSION}' \ -X 'main.BuildTime=${BUILD_TIME}' \ ...
golang包的使用依赖一个重要的环境变量:GOPATH,无论是自己的代码还是第三方代码,都以GOPATH作为工作...