首頁 >後端開發 >Golang >如何從 Go 程式碼中檢索模組版本?

如何從 Go 程式碼中檢索模組版本?

Susan Sarandon
Susan Sarandon原創
2024-11-03 09:03:29880瀏覽

How Can I Retrieve Module Versions from Within Go Code?

從 Go 程式碼中擷取模組版本

Go 工具在已編譯的二進位檔案中包含模組和相依性資訊。利用此功能,runtime/debug.ReadBuildInfo() 函數提供了在應用程式執行時存取此資料的方法。它提供了一個包含依賴項詳細資訊的數組,包括模組路徑和版本號。

對於每個模組或依賴項,此數組包含一個debug.Module 結構,詳細資訊如下:

type Module struct {
    Path    string  // module path
    Version string  // module version
    Sum     string  // checksum
    Replace *Module // replaced by this module
}

至舉例說明此流程:

package main

import (
    "fmt"
    "log"
    "runtime/debug"

    "github.com/icza/bitio"
)

func main() {
    _ = bitio.NewReader
    bi, ok := debug.ReadBuildInfo()
    if !ok {
        log.Printf("Failed to read build info")
        return
    }

    for _, dep := range bi.Deps {
        fmt.Printf("Dep: %+v\n", dep)
    }
}

在Go Playground 上執行時,會產生以下輸出:

Dep: &{Path:github.com/icza/bitio Version:v1.0.0 Sum:h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8= Replace:<nil>}

請參閱相關問題以獲得更多見解:如何取得詳細的Go 建置日誌,以及GOPATH 和「go module」模式中使用的所有包?

以上是如何從 Go 程式碼中檢索模組版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn