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 }
Toこのプロセスの例を示します:
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 プレイグラウンドで実行すると、次の出力が生成されます:
Dep: &{Path:github.com/icza/bitio Version:v1.0.0 Sum:h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8= Replace:<nil>}
詳細については、関連する質問を参照してください: 詳細な Go ビルドを取得する方法GOPATH および「go module」モードで使用されるすべてのパッケージとともにログを保存しますか?
以上がGo コード内からモジュールのバージョンを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。