我在make文件中有一个变量VERSION
,它在编译时使用-ldflags
设置二进制版本
VERSION = $(strip $(TIMESTAMP))
LDFLAGS = -ldflags "-X main.buildTime $(BUILD_TIME) -X main.buildNumber $(VERSION)"
现在我想在一个不是main
的包中获得版本并打印它。我尝试了很多选项,但都没有成功。
我的问题是我如何在包中得到它,然后在运行时将其打印到客户端,如you are connected to app version 2.0
..??
目录结构:
- main.go
- test/
- test.go
test.go
package test
var Version = ""
main.go
package main
import (
"fmt"
"test"
)
func main() {
fmt.Println(test.Version)
}
最后,运行:
go run -ldflags="-X test.Version 2.0.0" main.go
输出:
> 2.0.0
由于可以指定导入路径,因此可以在任何地方设置字符串的值,而不仅仅是在main中。
从go 1.5起,语法改为importpath.name=string
。