我使用golang制造游戏服务器,并且我拥有诸如Player
和Skill
之类的实体。 Player
可以使用他的技能,而Skill
可以影响玩家。 Player
个文件和技能文件位于logic
目录(和package logic
)中。我想将技能文件移到单独的目录skills
中。我无法将其放置在逻辑目录中并保留逻辑包,因为它们导致golang不允许使用它。我也无法制作package skills
并将目录放置在与逻辑目录相同的级别,因为我得到了:
不允许导入周期
package main
imports projname/server/logic
imports projname/server/skills
imports projname/server/logic
我的项目架构有什么问题,我该如何解决?
答案 0 :(得分:1)
您的main
软件包imports
logic
软件包。它还导入skills
imports
和logic
。 Go对于不允许导入周期非常严格。
如果您被迫在import
中logic
main
,因为您正在使用logic
中声明的某种类型来初始化{{ 1}}。您可以在skills
中而不是在skills
中声明该类型。
如果您logic
正在使用import
,因为logic
中使用了逻辑功能。您可以在main
中编写一个包装器(带有一个新函数),该包装器从skills
(已经被调用)中调用该函数。
无论哪种方式,您都必须尝试删除logic
中logic
的导入。