转载请注明出处,原文链接http://tailnode.tk/2017/01/go...
我们经常会在一些程序的输出中看到程序版本、编译时间、Git的commit id等信息,比如docker
ming@vultr:~$ docker version
Client:
Version: 1.12.5
API version: 1.24
Go version: go1.6.4
Git commit: 7392c3b
Built: Fri Dec 16 02:42:17 2016
OS/Arch: linux/amd64
...
我们可以提供一个配置文件version.conf
,程序运行时从version.conf
取得这些信息进行显示。但是在部署程序时,除了二进制文件还需要额外的配置文件,不是很方便。
或者将这些信息写入代码中,这样不需要额外的version.conf
,但要在每次编译时修改代码文件,也够麻烦的了。
有一种更好的办法是在编译时使用参数-ldflags -X importpath.name=value,官方解释如下
-X importpath.name=value
Se