1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Golang】プログラム内から import している外部パッケージのバージョンを確認する【外部モジュール情報の取得】

Last updated at Posted at 2021-09-27

Go 言語(以下 Golang)のソースコードの main パッケージで、アプリが利用しているモジュール/外部パッケージのバージョンを取得したい。

「"golang" import パッケージ モジュール バージョン 確認」でググっても、go get するモジュールのバージョン指定しか出てこなかったので、自分のググラビリティとして。

TS; DR (今北産業)

  1. runtime/debug パッケージの debug.ReadBuildInfo() を使い buildInfo.Deps で依存パッケージ(モジュール)情報から Version フィールドを参照する。(Go 1.12 以降)

  2. 具体的なコード

    package main
    
    import (
    	"fmt"
    
    	"log"
    
    	"golang.org/x/xerrors"
    	"runtime/debug"
    )
    
    func main() {
    	buildInfo, ok := debug.ReadBuildInfo()
    	if !ok {
    		err := xerrors.New("failed to get build info")
    
    		log.Fatal(err)
    	}
    
    	for _, modDep := range buildInfo.Deps {
    		fmt.Println("module name:", modDep.Path)
    		fmt.Println("module version:", modDep.Version)
    	}
    }
    // Output:
    // module name: golang.org/x/xerrors
    // module version: v0.0.0-20200804184101-5ec99f83aff1
    
  3. オンラインで動作をみる @ Go Playground

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?