登录
首页 >  Golang >  Go问答

获取指定目录中Go程序所有的包和依赖项的方法

来源:stackoverflow

时间:2024-02-28 17:09:26 336浏览 收藏

本篇文章给大家分享《获取指定目录中Go程序所有的包和依赖项的方法》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我有一个很大的 Go 包目录,它实际上是我的 $GOPATH/src 目录。我试图递归地获取该目录的所有子目录(包括供应商目录)中的所有包(如果可能的话,最终还有它们的版本,但即使是名称也是一个很好的开始)的列表。当我运行 go list all ./... in $GOPATH/src 时,我收到一堆消息:

目录 [foo] 中的代码需要导入 [bar]

但是,如果我导航到各个包工作目录,它似乎可以工作。我也不确定为什么它实际上确实找到了上述命令中的包,但显示了该错误,当我向下导航到每个包的目录时,它不会显示该错误。有没有办法使用 Go 工具集指定这样的递归查找?


正确答案


这似乎是src/cmd/go/internal/load/pkg.go的结果

        if !cfg.ModulesEnabled && data.err == nil &&
            data.p.ImportComment != "" && data.p.ImportComment != path &&
            !strings.Contains(path, "/vendor/") && !strings.HasPrefix(path, "vendor/") {
            data.err = fmt.Errorf("code in directory %s expects import %q", data.p.Dir, data.p.ImportComment)
        }

在未启用模块的项目中,使用 vendor/ 软件包时,您会收到该错误(与在 vendor 文件夹内运行相同的命令相反,这不会触发所示的条件)上)

终于介绍完啦!小伙伴们,这篇关于《获取指定目录中Go程序所有的包和依赖项的方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>