從 Go 程式碼中擷取模組版本
Go 工具在已編譯的二進位檔案中包含模組和相依性資訊。利用此功能,runtime/debug.ReadBuildInfo() 函數提供了在應用程式執行時存取此資料的方法。它提供了一個包含依賴項詳細資訊的數組,包括模組路徑和版本號。
對於每個模組或依賴項,此數組包含一個debug.Module 結構,詳細資訊如下:
1 2 3 4 5 6 | type Module struct {
Path string
Version string
Sum string
Replace *Module
}
|
登入後複製
至舉例說明此流程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 上執行時,會產生以下輸出:
1 | Dep: &{Path:github.com/icza/bitio Version:v1.0.0 Sum:h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8= Replace:<nil>}
|
登入後複製
請參閱相關問題以獲得更多見解:如何取得詳細的Go 建置日誌,以及GOPATH 和「go module」模式中使用的所有包?
以上是如何從 Go 程式碼中檢索模組版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!