go - 游戏服务器的 Golang 目录组织
问题描述
我在 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
我的项目架构有什么问题,我该如何解决?
解决方案
你的main
包裹imports
logic
包裹。它也进口skills
which 也imports
logic
。Go 对不允许导入周期非常严格。
如果您被迫
import
logic
inmain
,因为您正在使用 in 中声明的某种类型logic
来初始化 in 中的函数或处理程序skills
。您可能会声明该类型 inskills
而不是 inlogic
。如果您正在
import
inglogic
中使用逻辑中的某些功能main
。skills
您可以在(使用新函数)中编写一个包装器,该包装器从logic
(已被调用)调用该函数。
无论哪种方式,您都必须尝试删除logic
in的导入main
。
推荐阅读
- .net - DataContractJsonSerializer.ReadObject(XmlReader, Boolean) 如何从 XmlReader 读取 json?
- java - 我如何使用另一个类的数组?
- python - Python - 随机改变图片而不改变图片质量
- android - popBackStack 不更新 NavigationUI 上的操作栏
- flutter - Flutter的RerderableListView中如何限制拖动某些元素
- c# - C# 从 nameof 获得的不仅仅是名称的最后一部分
- rust - 将结构向量转换为另一个结构向量的惯用方法是什么
- flutter - Flutter:如何防止我的主要小部件旋转并仍然跟踪它的方向?
- node.js - 不正确的用户/通过拒绝从节点/express/mongodb 需要很长时间
- r - 是否可以沿 facet_grid() 使用 geom_table()?