有没有办法在 Go 代码中获取 Go 模块的完整路径 [关闭]

Posted

技术标签:

【中文标题】有没有办法在 Go 代码中获取 Go 模块的完整路径 [关闭]【英文标题】:Is there a way to get Go module's full path inside Go code [closed] 【发布时间】:2020-02-17 00:56:34 【问题描述】:

有没有办法在我的项目正在使用的外部库下获取模块的完整路径?

【问题讨论】:

你能指出这个需求的用例吗? 可能不是,但你是什么意思?您认为“模块的完整路径”是什么样的? 我导入了一个需要在运行代码时编译的 pkg。 @DevendraMukharaiya 这是完整路径“~/workspace/pkg/mod/github.com/spacemeshos/go-spacemesh-mock@v0.0.0-20191020144922-ca780c919bc3”只是我电脑上的另一个文件夹。 你为什么要这个?这看起来很像一个 XY 问题。 【参考方案1】:

Go 是一种编译语言,大多数外部库(模块)将静态链接到同一个二进制文件中。这意味着您使用的所有 Go 库都在同一个二进制文件中,而不是在您的 PC 中。

如果您使用go mod,this post 将帮助您了解模块在构建期间的位置。 如果您单独使用 GOPATH,则库将下载到您的 $GOPATH/src,后跟用于导入的地址。

如果这不是您要查找的内容,分析您使用的库的一种方法是检查您的 go.mod 文件。

【讨论】:

感谢您的快速回复,我正在使用 go mod,并且确实在笔记本电脑上看到了代码。我想我必须从 mod 文件中读取,虽然我不想这样做,它不那么优雅。【参考方案2】:

有没有办法在 go 代码中获取 go 模块的完整路径

没有。

【讨论】:

以上是关于有没有办法在 Go 代码中获取 Go 模块的完整路径 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

模块化代码在 Go 中是如何工作的?

Mac OSX在eclipse里运行Go test 的一些小坑

go语言插件平台的实现思路

从 Go 的二进制文件中获取其依赖的模块信息

GO语言(十一):开始使用多模块工作区

Go中的地址对齐