用Golang编写的程序中,如何确认导入的外部包的版本【获取外部模块信息】
在Go语言(以下简称Golang)的main包中,我想要获取应用程序所使用的模块/外部包的版本。
由于在搜索「”golang” import パッケージ モジュール バージョン 確認」时只出现了关于使用go get命令指定模块版本的结果,这证明了我自己在搜索引擎上的检索能力。
太长不看 (Today’s Northern Industry)
-
- 使用runtime/debug包的debug.ReadBuildInfo()函数来从依赖包(模块)信息中引用Version字段。(Go 1.12或更新版本)
具体代码如下:
package main
import (
“fmt”
“log”
“golang.org/x/xerrors”
“runtime/debug”
)
func main() {
buildInfo, ok := debug.ReadBuildInfo()
if !ok {
err := xerrors.New(“无法获取构建信息”)
log.Fatal(err)
}
for _, modDep := range buildInfo.Deps {
fmt.Println(“模块名称:”, modDep.Path)
fmt.Println(“模块版本:”, modDep.Version)
}
}
// 输出:
// 模块名称: golang.org/x/xerrors
// 模块版本: v0.0.0-20200804184101-5ec99f83aff1
在线实例:Go Playground
文献引用
“go install” でもアプリのバージョン情報に自動対応させる @ Qiita