如何在我的Go源中找到相对导入?

如何在我的Go源中找到相对导入?,go,Go,我试图在我的项目中使用,当我试图添加依赖项时: dep确保-添加github.com/foo/bar 我会遇到很多类似的错误: sure Solve():没有版本的github.com/foo/bar满足约束: v1.2.3:无法引入github.com/foo/bar@v1.2.3,作为其子包github.com/foo/bar 不包含可用的Go代码(*build.NoGoError)。。(程序包是(root)所必需的。) 此类问题通常是由相关项目中的相对重要性引起的 如何在具有供应商依赖

我试图在我的项目中使用,当我试图添加依赖项时:

dep确保-添加github.com/foo/bar
我会遇到很多类似的错误:

sure Solve():没有版本的github.com/foo/bar满足约束:
v1.2.3:无法引入github.com/foo/bar@v1.2.3,作为其子包github.com/foo/bar
不包含可用的Go代码(*build.NoGoError)。。(程序包是(root)所必需的。)
此类问题通常是由相关项目中的相对重要性引起的

如何在具有供应商依赖关系的大型项目中定位相对导入?现有的围棋工具能帮我吗


我目前的解决方案是在
grep-rn'\./'--include=\*.go.
的输出中爬行,但这很慢。

您可以使用
go list
命令查找所有导入的包

go list -f '{{ join .Imports "\n" }}'
在内部,相对导入被转换为绝对路径,并以
\uuu
作为前缀,因此这应该显示任何包中的任何相对导入

go list -f '{{ join .Imports "\n" }}' ./... | grep '^_'
相对导入不适用于名称引用的包,因为这些包无论如何都必须在GOPATH中。它可能是您未使用的包,或者是
\u test.go
文件中的某个文件,意味着要从包目录中隐式运行。您可以单独检查测试导入,但是在扩展它们时,它们是不干净的d,前缀为

go list -f '{{ join .TestImports "\n" }}' ./... | grep '\./'