ホームページ >バックエンド開発 >Golang >Go コード内からモジュールのバージョンを取得するにはどうすればよいですか?

Go コード内からモジュールのバージョンを取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 09:03:29881ブラウズ

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
}

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。