Golang 编译时改变参数,比如传递版本号等信息

yufei       3 年, 11 月 前       2026

作为外包系统,或者自动集成系统,发布的 Golang 程序往往需要携带版本号,作者,git 哈希等信息。

这一点,Go 语言编译器提供了 -ldflags 来传递变量参数,举个例子,下面的代码,当我们使用 -v 参数时,程序会输出当前的 git Hash,编译时间和编译时的 Go 版本号

package main

import (
    "fmt"
    "os"
)

var (
    gitHash   string
    buildTime string
    goVersion string
)

func main() {
    args := os.Args
    if len(args) == 2 && (args[1] == "--version" || args[1] == "-v") {
        fmt.Printf("Git Comit Hash:%s\n", gitHash)
        fmt.Printf("编译时间: %s \n", buildTime)
        fmt.Printf("编译器 Go 版本: %s \n", goVersion)
    }
}

编译时的参数如下

go build -ldflags "-X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(git show -s --format=%cd)'" main.go

然后运行 ./main 时结果如下

Git Comit Hash:5e2d8e869ca42b73e5790c7c0fd7184c5e654145
编译时间: Thu Apr 9 15:53:32 2020 +0800 
编译器 Go 版本: go version go1.14.1 darwin/amd64 
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.