如果你通过go vet检查代码,或者编译代码时,显示循环依赖的报错,它大概长这样子:

package code/app/user/service
        imports code/app/system/service
        imports code/app/user/service: import cycle not allowed
code/app/user/service
go list code/app/user/service
code/app/user/servicecode/app/system/serviceservice

你会搜索到导入包的那一行代码,然后搜索该包在该文件中哪些地方使用了,修改代码实现,不再导入此包,问题就会解决。

后记

我遇到这个问题之后,参考了很多文章,他们都推荐了一些显示包依赖关系的可视化工具,我觉得不如go自带的工具方便。