用Golang编写的程序中,如何确认导入的外部包的版本【获取外部模块信息】

在Go语言(以下简称Golang)的main包中,我想要获取应用程序所使用的模块/外部包的版本。

由于在搜索「”golang” import パッケージ モジュール バージョン 確認」时只出现了关于使用go get命令指定模块版本的结果,这证明了我自己在搜索引擎上的检索能力。

太长不看 (Today’s Northern Industry)

    1. 使用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

广告
将在 10 秒后关闭
bannerAds