4

我有文件playground.go

package main

import (
  "fmt"
)

var GitCommit string

func main() {
  fmt.Printf("Hello world, version: %s\n", GitCommit)
}

为什么构建 ldflag 的行为-X取决于指定源文件名?:

# CASE 1
$ go build -ldflags "-X main.GitCommit=abc" && ./go_playground
Hello world, version: 

$ go tool nm go_playground
52a900 D main.GitCommit

# CASE 2
$ go build -ldflags "-X main.GitCommit=abc" playground.go && ./playground
Hello world, version: abc

$ go tool nm playground
5242f0 D main.GitCommit
4c5678 R main.GitCommit.str

编辑:似乎从符号链接目录执行案例 1 时会出现问题;当 case 1 从原始目录执行时,变量被传递。我不确定这是否是预期的,或者这是一个错误。

4

0 回答 0