中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

發布時間:2023-04-07 10:31:06 來源:億速云 閱讀:150 作者:iii 欄目:開發技術

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

一、獲取生成時間

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

假如有如下Go源碼:

package main

var BuildTime string

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

使用Go的編譯參數:

-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語言中改為阿拉伯數字來表示,并改為年-月-日 時:分:秒的數字表現形式。

生成時間一經生成是不會變的,所以在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來執行然后獲取返回結果即可。

代碼如下:

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返回的結果中有一個換行符\n,所以在獲取后有把它去掉。

三、獲取Go的相關信息

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

1. Go語言版本信息

runtime.Version()

2. 當前Go使用的操作系統信息

runtime.GOOS

3.當前GO使用的CPU指令架構信息

runtime.GOARCH

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

向AI問一下細節

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

go
AI

石泉县| 泰州市| 宿松县| 甘洛县| 太仆寺旗| 大宁县| 阳高县| 连南| 湛江市| 梅河口市| 厦门市| 佛坪县| 临颍县| 嵊泗县| 雷山县| 黎城县| 邵阳市| 姚安县| 建湖县| 咸丰县| 富民县| 志丹县| 孝义市| 开鲁县| 孙吴县| 普兰店市| 兴化市| 德兴市| 项城市| 株洲市| 政和县| 绥化市| 彭阳县| 都匀市| 泗水县| 沙坪坝区| 红河县| 丹棱县| 逊克县| 芒康县| 泗水县|