为了账号安全,请及时绑定邮箱和手机立即绑定

如何查明“不允许导入周期”问题?

如何查明“不允许导入周期”问题?

Go
慕勒3428872 2022-09-05 11:00:47
如何分析哪个源文件导致“不允许导入周期”问题?错误消息不够清晰,无法让我解决问题:package command-line-arguments    imports app.exap/i8/internal    imports app.exap/i8/internal/data/retrieves    imports app.exap/i8/internal/integration/datastore    imports app.exap/i8/internal/objects/modules    imports app.exap/i8/internal/data    imports app.exap/i8/internal/integration/datastore: import cycle not allowedpackage command-line-arguments    imports app.exap/i8/internal    imports app.exap/i8/internal/data/retrieves    imports app.exap/i8/internal/integration/datastore    imports app.exap/i8/internal/objects/modules    imports app.exap/i8/internal/data    imports app.exap/i8/internal/objects/modules: import cycle not allowed
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这个问题不能归咎于单个源文件,仅仅是因为导入周期通常涉及来自不同包的多个源文件。

但是,您可以从错误消息中收集有价值的信息:您的项目似乎遭受了两个不同的导入周期(2周期和3周期)的影响,涉及三个包:

//img1.sycdn.imooc.com//631566820001fc5a06580175.jpg

要打破这些循环,首先需要确定应消除循环的哪些边。但是,我很难就此为您提供明确的指导,因为要消除的最佳边缘高度依赖于项目的上下文。

但是,避免 Go 中导入周期的一个很好的经验法则是,高级包不应依赖于较低级别的包。因此,您很可能不想依赖app.exap/i8/internal/data

  • app.exap/i8/internal/integration/datastore

  • 或。app.exap/i8/internal/objects/modules

一旦你决定了要消除哪两个边缘,只需确定导入包的哪些源文件包含违规的导入声明,并找到一种方法来重构代码以删除它们。


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 47 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信