我正在我公司的一个项目中工作,我需要添加一个新接口并将其实现到现有代码中。当我这样做时,我遇到了一个具有挑战性的情况,我遇到了循环依赖问题。以下是更多详细信息:项目目录:test-cyclic-dependency现有代码在 File1 中:test-cyclic-dependency/model/state/model.gopackage stateimport ("test-cyclic-dependency/model")type CollectionByCollectionName struct { CollectionName string imOfTypeInModel model.STRING}我需要在 File2 中定义一个新的接口 Search:test-cyclic-dependency/model/search.gopackage modelimport ( "test-cyclic-dependency/model/state")type Search interface { Search(keyword string) state.CollectionByCollectionName}type STRING string此代码导致循环依赖错误,如下所示:# go build model/state/model.go package command-line-arguments imports test-cyclic-dependency/model imports test-cyclic-dependency/model/state imports test-cyclic-dependency/model: import cycle not allowed有人可以帮我解决这个问题吗?有没有办法解决它保持代码组织相同?
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
打破依赖循环type STRING string
进入state
包(因为那是唯一使用它的地方 - 所以我猜它与它相关)并model
从包中删除导入state
。或者,如果它不适合那里逻辑上移动type STRING string
到它自己的第三个包并且只在state
包中导入它。
注意:我假设 typeSTRING
只是一些更有意义的占位符,以保持您的示例简单。根本没有意义type STRING string
。如果您删除它并仅使用string
您不再需要model
导入state
.
- 2 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消