-X符号值
设置否则未初始化字符串变量的值。符号名称的格式应为importpath.name,如由“go tool nm”打印的符号表中所示。
所以这很酷。它可以让你做的东西是这样的:
package main
import "fmt"
var version string
func 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)"'
的documentation for the go
command说:
-ldflags 'flag list'
所以他们使用单引号所有连接标志。但是,包含空格作为-X
标志的符号的字符串呢?双引号工作得很好,所以做单引号转义btw。,我只是不确定我可以依靠所有这一切工作始终如一,因为文档没有提及任何它。
第一个问题的澄清:
转到零初始化所有瓦尔。
该文档说:-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
完美。谢谢。初始化变量呢? – superlukas 2014-09-12 18:16:20
那么......默认情况下,Go中的所有变量都初始化为零值。所以我不知道如何找到一个未初始化的变量来设置。 – 2014-09-12 19:16:19
@superlukas你究竟是什么意思?如果我没有设置,你想使用特定的有效吗? – OneOfOne 2014-09-12 19:17:17