来自ld 的文档:-X 符号值设置否则未初始化的字符串变量的值。符号名称应采用 importpath.name 格式,如“go tool nm”打印的符号表中所示。所以这很酷。它允许你做这样的事情:package mainimport "fmt"var version stringfunc main() { fmt.Println(version)}编译: go build -ldflags '-X main.version 42' ...我有两个关于他的功能的问题。首先,它也适用于已初始化的字符串(例如var version = "bad build"),即使文档特别指出“否则未初始化的字符串变量”。第二个问题是关于空格的。我的Makefile包含以下几行:GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null)LDFLAGS := '-X main.version "$(GIT_BRANCH) $(GIT_COMMIT)"'该命令的文档go说:-ldflags 'flag list'所以他们对所有链接器标志使用单引号。但是一个包含空格作为标志符号的字符串-X呢?双引号工作得很好,所以转义单引号也是如此,我只是不确定我是否可以依靠所有这些来始终如一地工作,因为文档没有提到任何一个。澄清第一个问题:Go 对所有变量进行零初始化。文档说:-X symbol value Set the value of an otherwise uninitialized string variable [...]。这是否意味着:var foo string // only this one?var bar = "bar" // or this one too, maybe
1 回答
- 1 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消