91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

北碚区| 夏河县| 屯昌县| 清水县| 边坝县| 潮州市| 无为县| 枝江市| 桐城市| 垦利县| 罗平县| 麻栗坡县| 绥中县| 九江县| 阿城市| 遂昌县| 分宜县| 绥江县| 轮台县| 河西区| 吉水县| 嘉善县| 高唐县| 昌乐县| 新蔡县| 韶关市| 民县| 宁国市| 平和县| 鞍山市| 亳州市| 芮城县| 林芝县| 新野县| 繁峙县| 榆树市| 昂仁县| 乌兰浩特市| 贵定县| 繁昌县| 远安县|