怎么优雅的解决循环引入

情况是这样的

模块结构如下

/db/db.go: import db/drivers/mysql 
/db/drivers/mysql/mysql.go : import db 需要 db 里的一个 interface 约束
// mysql.go
func xxx(db.XxxxInterface)

/db/db_test.go: go test 报错循环依赖

真实使用场景可能是

import db
import db/drivers/mysql

那 test 及整个循环依赖的引入怎么解决呢

总不能把interface拷贝一份到drivers里吧

最佳答案

简单, 1.db需要import xx/mysql,那就把那段逻辑搬到xx/mysql。 2.或者单独把interface 拿出来放到另外的package,那么依赖关系就是,interface <-xx/mysql <-/db,也没有循环依赖问题了。

10个月前 评论
讨论数量: 2

简单, 1.db需要import xx/mysql,那就把那段逻辑搬到xx/mysql。 2.或者单独把interface 拿出来放到另外的package,那么依赖关系就是,interface <-xx/mysql <-/db,也没有循环依赖问题了。

10个月前 评论

楼上说的对,存在循环引用十有八九是把不该放在一起东西放到一起了

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!