游戏服务器的Golang目录组织

时间:2018-08-08 12:49:43

标签: go architecture

我使用golang制造游戏服务器,并且我拥有诸如PlayerSkill之类的实体。 Player可以使用他的技能,而Skill可以影响玩家。 Player个文件和技能文件位于logic目录(和package logic)中。我想将技能文件移到单独的目录skills中。我无法将其放置在逻辑目录中并保留逻辑包,因为它们导致golang不允许使用它。我也无法制作package skills并将目录放置在与逻辑目录相同的级别,因为我得到了:

  

不允许导入周期

package main
imports projname/server/logic
imports projname/server/skills
imports projname/server/logic

我的项目架构有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

您的main软件包imports logic软件包。它还导入skills importslogic。 Go对于不允许导入周期非常严格。

  • 如果您被迫在importlogic main,因为您正在使用logic中声明的某种类型来初始化{{ 1}}。您可以在skills中而不是在skills中声明该类型。

  • 如果您logic正在使用import,因为logic中使用了逻辑功能。您可以在main中编写一个包装器(带有一个新函数),该包装器从skills(已经被调用)中调用该函数。

无论哪种方式,您都必须尝试删除logiclogic的导入。