-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