我正在使用GO 1.9.2创建一个应用程序,并试图在构建期间使用ldflags -X选项向其添加一个版本字符串变量.

我已经通过使用:-ldflags "-X main.Version=1.0.0"在我的main包中设置了Version个变量,但是我真正需要的是在我的config包中设置Version个变量,而不是main个.这可能吗?

以下是我的构建命令:

go build -ldflags "-X config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)

推荐答案

引用Command link号文件:

-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.

所以它可以用于任何套餐,而不仅仅是main套餐.但是您必须指定完整的import path,而不仅仅是包名.

例如,如果您的config软件包位于$GOPATH/src/my/package/config,则使用以下命令:

go build -ldflags "-X my/package/config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)

Go相关问答推荐

Golang测试容器,无法使网络正常工作

GO错误:Tim.Time未实现driver.Valuer(缺少方法值)

创建服务时云运行触发器执行失败

使用Golang的Lambda自定义al2运行时,初始化阶段超时

Golang在不写入磁盘的情况下为jpeg图像生成一致的哈希

Go 中带有回调的 MiniDumpWriteDump

Go 中将 int 切片转换为自定义 int 切片指针类型的函数

Go Gin:验证 base64

在 Go 中将元数据从一个 JPEG 复制到另一个

从 ApiGateway 中的 lambda Go 返回 Json

如何将Golang测试用例的测试覆盖率值与特定阈值进行比较

当我的 go build 成功时,如何修复我的 docker build 失败? Dockerfile 包括 go mod 下载

golang 上基于标头的版本控制

如何使用名称具有包名称的嵌套 struct 启动 go struct

拆分文本并按空格获取字符串数组,如果文本长度超过 500,则获取字符串数组

为什么 Go 被认为是部分抢占式的?

当有多个同名包时如何在vscode中显示golang包完整路径?

使用 Go 读取 TOML 文件时结果为空

GORM GIN 更新查询导致 500 内部服务器错误

Go:如何通过 GIN-Router 从 AWS S3 将文件作为二进制流发送到浏览器?