【发布时间】:2014-08-22 23:17:56
【问题描述】:
是否可以在 Golang 中执行“相互”包导入之类的操作?
例如,我有两个包,A 和 B,具有功能 AFunc 和 BFunc,BFunc2
package A
import "B"
func AFunc() {
//do stuff but also use
B.BFunc()
}
-
package B
import "A"
func BFunc() {
//do foo
}
func BFunc2() {
//do different stuff but also use
A.AFunc()
}
有没有办法在不使用第三个包作为“桥梁”的情况下实现这一点?
编辑:
为了稍微澄清一下这个问题,“简单地做”这当然是不可能的,因为编译器会抛出一个import cycle not allowed 错误。问题是,是否有一种更清洁或更成熟的方法来解决这个问题,然后构建一个“桥梁包”?
【问题讨论】:
-
不,禁止循环导入。