溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go項目中如何添加生成時間與版本信息

發(fā)布時間:2023-04-07 10:31:06 來源:億速云 閱讀:142 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Go項目中如何添加生成時間與版本信息的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Go項目中如何添加生成時間與版本信息文章都會有所收獲,下面我們一起來看看吧。

一、獲取生成時間

1.使用Go編譯時的鏈接參數(shù)來指定生成時間

假如有如下Go源碼:

package main

var BuildTime string

func main() {
    fmt.Printf("Build Time: %s\n", BuildTime )
}

使用Go的編譯參數(shù):

-ldflags -X importpath.name=value

來設置。

在Linux、MinGW、Cygwin、MacOS的Bash中可以使用如下指令來指定生成的時間信息:

go build -ldflags "-X 'main.BuildTime=`date +'%Y-%m-%d %H:%M:%S'`'" -o main.exe

但是在Windows的命令行中不能正常工作,包括在Windows的Goland中也不能正常工作。

2.使用C語言獲取生成時間

由于C語言__DATE__宏是使用的英文字母表示的月份,為了方便、直觀,這里在Go語言中改為阿拉伯數(shù)字來表示,并改為年-月-日 時:分:秒的數(shù)字表現(xiàn)形式。

生成時間一經(jīng)生成是不會變的,所以在Go語言中只需要獲取一次即可,如果有值了,則直接返回。

直接上代碼:

package ver

/*
const char* GetCompileDate()
{
    return __DATE__;
}

const char* GetCompileTime()
{
    return __TIME__;
}
*/
import "C"
import (
    "fmt"
    "strings"
)

var buildTime string

func GetBuildTime() string {
    if buildTime != "" {
        return buildTime
    }
    date := C.GoString(C.GetCompileDate())
    tm := C.GoString(C.GetCompileTime())

    strMonth := []string{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Sep", "Dec"}
    arStr := strings.Split(date, " ")
    for i, s := range strMonth {
        if s == arStr[0] {
            buildTime = fmt.Sprintf("%s-%02d-%s %v", arStr[2], i+1, arStr[1], tm)
            break
        }
    }
    return buildTime
}

 由于使用了CGO,所以需要安裝有GCC編譯器。這種方式在Windows與Linux下都可以使用。

二、獲取Git版本信息

git獲取版本信息的指令為git show -s --format=%H,可以使用Go來執(zhí)行然后獲取返回結(jié)果即可。

代碼如下:

package ver

import "os/exec"

var gitVer string

func GetGitVer() string {
    if gitVer != "" {
        return gitVer
    }
    Cmd := exec.Command("git", "show", "-s", "--format=%H")
    out, err := Cmd.Output()
    if err != nil {
        return gitVer
    }
    gitVer = string(out[:len(out)-1])
    return gitVer
}

由于Cmd返回的結(jié)果中有一個換行符\n,所以在獲取后有把它去掉。

三、獲取Go的相關(guān)信息

這就比較容易了,Go語言自帶:

1. Go語言版本信息

runtime.Version()

2. 當前Go使用的操作系統(tǒng)信息

runtime.GOOS

3.當前GO使用的CPU指令架構(gòu)信息

runtime.GOARCH

關(guān)于“Go項目中如何添加生成時間與版本信息”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Go項目中如何添加生成時間與版本信息”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

go
AI