每次编译Go应用时,是否可以自动增加次要版本号?
我想在程序中设置一个版本号,并带有一个自动递增部分:
$ myapp -version
MyApp version 0.5.132
我设置的版本号是0.5,而132则是每次编译二进制文件时都会自动增加的值。
Go中有可能吗?
Go链接器(go工具链接)具有一个选项,用于设置未初始化的字符串变量的值:
-X importpath.name=value Set the value of the string variable in importpath named name to
值。请注意,在Go 1.5之前,此选项采用两个单独的参数。现在,需要在第一个=符号上拆分一个参数。
作为构建过程的一部分,您可以使用此设置版本字符串变量。您可以go
使用来通过工具传递此信息-ldflags
。例如,给定以下源文件:
package main
import "fmt"
var xyz string
func main() {
fmt.Println(xyz)
}
然后:
$ go run -ldflags "-X main.xyz=abc" main.go
abc
为了main.minversion
在构建时设置构建日期和时间:
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
如果您不main.minversion
通过这种方式进行初始化而进行编译,则它将包含空字符串。