Go build 添加版本等信息

Go 在编译时可以添加一些额外的参数,这些参数可以用来添加如版本等信息。

比如有以下的 t.go 文件源码👇

go

package main

import (
	"flag"
	"fmt"
	"runtime"
)

var (
	version   string
	buildTime string
	commitID  string
)

func init() {
	flag.StringVar(&version, "version", "", "版本信息")
}
func main() {
	flag.Parse()
	if version == "version" || version == "v" {
		fmt.Printf("Git commit:   %s\nGo version:   %s\nBuilt:        %s\nOS/Arch:      %s/%s\n ",
			commitID, runtime.Version(), buildTime, runtime.GOOS, runtime.GOARCH)
		return
	}
	fmt.Println("hello world")
}

用以下命令编译👇

注意-X 后面要写完整的包路径,示例中是 main 包。

shell

go build -ldflags "-X 'main.version=1.0.0' -X 'main.buildTime=$(date +"%Y-%m-%d %H:%M:%S")' -X 'main.commitID=1234567890'" -o t t.go

示例结果
示例结果

可以看到,编译后的文件中包含了版本信息,比如版本号、编译时间、提交 ID 等。