首页 > 后端开发 > Golang > 正文

如何从 Go 代码中检索模块版本?

Susan Sarandon
发布: 2024-11-03 09:03:29
原创
814 人浏览过

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
}
登录后复制

至举例说明此过程:

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 Playground 上执行时,会产生以下输出:

Dep: &{Path:github.com/icza/bitio Version:v1.0.0 Sum:h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8= Replace:<nil>}
登录后复制

请参阅相关问题以获取更多见解:如何获取详细的 Go 构建日志,以及 GOPATH 和“go module”模式中使用的所有包?

以上是如何从 Go 代码中检索模块版本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板