【发布时间】:2015-07-13 19:14:28
【问题描述】:
我在 Go 中有一个包含多个模块的项目。由于以下情况,我遇到了循环导入问题:
详情
模块 Game 包含具有当前 Game 状态的结构。另一个模块(修改器)正在做一些游戏特定的东西和计算,因此修改游戏状态。因此,Modifier 将需要结构体 Game,但不需要 Game 中的任何方法。修改器是从游戏中调用的,这里我们有循环导入。
问题:
-
游戏启动修改器
-
修改器需要游戏结构
在我看来这是一个常见的情况,所以我想知道我应该如何以最好的方式解决它。我的解决方案是创建第三个模块“结构”,它只包含整个应用程序的所有结构。这是一个好的解决方案吗?
【问题讨论】:
-
听起来这两个东西需要放在同一个包中,因为它们是如此相互依赖。
-
可能:1.在Modifier包中,定义一个IGame接口,描述从Game 2中修改器需要什么。当Game启动Modifier时,将Game作为IGame传递给Modifier。