來自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 回答
- 0 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消