怎么优雅的解决循环引入
情况是这样的
模块结构如下
/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,也没有循环依赖问题了。