How to set package variable using -ldflags -X in Golang build
我正在使用Go 1.9.2创建一个应用程序,并且尝试在构建过程中使用
我已经通过使用
这是我的构建命令:
引用Command的文档链接:
1
2
3
4 -X importpath.name=value
Set the value of the string variable in importpath named name to value.
Note that before Go 1.5 this option took two separate arguments.
Now it takes one argument split on the first = sign.
因此它可以用于任何软件包,而不仅仅是
例如如果您的
1 | go build -ldflags"-X my/package/config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC) |
这是一个简单的示例,希望它可以阐明并帮助您轻松实现:
为您的应用程序创建目录:
1 | $ mkdir app && cd app |
创建子目录
1 | $ mkdir config |
添加以下文件。它应该在
下
1 2 3 4 5 6 | package config var Version string var BuildTime string //todo: can add as many as build vars |
在根
1 2 3 4 5 6 7 8 9 10 11 | package main import ( "fmt" "app/config" ) func main() { fmt.Println("build.Version:\\t", Version) fmt.Println("build.Time:\\t", build.BuildTime) } |
现在是时候构建了:
构建完成后,您现在可以运行该应用程序:
1 2 3 | $ ./app Version: 0.0.1 build.Time: Sat Jul 4 19:49:19 UTC 2020 |
最后,有时您可能需要探索自己未在
只需构建应用,然后使用
1 2 | $ go build -o app $ go tool nm ./app |
还有任何疑问或需要进一步澄清的吗?请随时在下面发表评论,我们会尽快与您联系。