go - 将Golang编译环境变量转到二进制

132 4

如果我编译这个程序


package main



import (


"fmt"


"os"


)



var version = os.Getenv("VERSION")



func main() {


 fmt.Println(version)


}



当我运行它时,它打印环境变量


VERSION="0.123"./example


> 0.123



是否可以将环境变量编译为二进制文件,例如:


VERSION="0.123" go build example.go



然后在运行时获得相同的输出

 
./example



 
时间:

81 5

Go1.5及以上编辑:

到现在,语法已经改变了。 使用


go build -ldflags"-X main.Version=$VERSION"



在Linux上,在 Windows 上


go build -ldflags"-X main.Version=%VERSION%"



这是 -X 链接器标志的用途。 在你的情况下,你会这样做


go build -ldflags"-X main.Version $VERSION"



编辑:在Windows上这将是


go build -ldflags"-X main.Version %VERSION%"



链接器 docs 中的更多信息 。

125 2

需要进行以下几项更改:

  • 将版本声明为 var version string
  • -X main.version=$VERSION 编译

下面是完整的代码:


package main



import (


"fmt"


)



var version string



func main() {


 fmt.Println(version)


}



现在编译


go build -ldflags"-X main.version=$VERSION"



...