在GoLang中使用LDFLAGS初始化非原始类型变量

c86crjj0  于 5个月前  发布在  Go
关注(0)|答案(1)|浏览(81)

我试图在构建时初始化一个变量,在 go build 中使用 ldflags 选项。
这段代码运行良好:

var version

func printVersion() {
    fmt.Printf(version) // prints the corresponding value
}

个字符
但是我似乎找不到一种方法来初始化我自己定义的结构的变量。我的意思是,这似乎不起作用:

type VersionInfo struct {
    version string
}

var versionInfo VersionInfo

func printVersion() {
    fmt.Printf(versionInfo.version)
}
go build -ldflags="-X $(ROOT)/pkg/info.versionInfo.version=123"

的字符串
我在官方文件中找不到任何关于这个问题的信息。有什么想法吗?

3duebb1j

3duebb1j1#

根据文档,似乎不可能通过链接器标志来实现这一点。变量必须是string类型。
-X importpath.name =value将名为name的导入路径中的字符串变量的值设置为value。这仅在源代码中声明变量未初始化或初始化为常量字符串表达式时有效。如果初始化器进行函数调用或引用其他变量,-X将不起作用。请注意,在Go 1.5之前,此选项有两个单独的参数。
来源:https://pkg.go.dev/cmd/link

相关问题