今天在启动 go 项目时报出了下面的错误,导致启动失败:
import cycle not allowed
根据字面意思猜测是导入出现了循环,再查一下资料,确实是这个意思,golang 不允许循环导包, 如果检测到import cycle,会在编译时报错。
仔细检查包之间的导入,去掉循环导入就可以了。
比如有两个 package,下面两种情况会出现报错:
import(
"package A"
"package B"
)
-
第一种:如果 package A 中已经导入 package B,而本 package 中又导入 package B
-
第二种:package A 依赖 package B,同时 package B 依赖package A
这样就会在编译时报 "import cycle not allowed"
。
如何避免重复导入包的问题,就需要在设计时规划好包, 通常 import cycle 是因为设计错误或包的规划问题。