從 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中文網其他相關文章!