首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何确定一个“不允许进口周期”的问题?

我如何确定一个“不允许进口周期”的问题?
EN

Stack Overflow用户
提问于 2021-06-06 06:03:18
回答 1查看 1.4K关注 0票数 0

如何分析哪个源文件导致“不允许导入周期”问题?错误信息不够清楚,不能让我解决这个问题:

代码语言:javascript
复制
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 allowed
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/objects/modules: import cycle not allowed
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-06 07:06:30

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

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

要打破这些循环,您首先需要决定哪些循环的边缘应该被消除。但是,我很难给您提供明确的指导,因为消除的最佳优势在很大程度上取决于项目的上下文。

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

app.exap/i8/internal/integration/datastore

  • or app.exap/i8/internal/objects/modules.

之一的

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67856223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档