Golang从不同包中的另一个gloang文件中删除循环依赖访问方法

时间:2017-11-24 20:10:41

标签: go

我的A.go文件的方法如下。

func pInfoEx(reqCtx B.RequestContext) {
    fmt.Println(reqCtx.p);
}

对于 pInfoEx 函数中的 RequestContext 参数,我必须导入另一个包中的 B.go 文件。

type RequestContext interface {
    p() string
}

B.go 导入 C.go ,其中导入 A.go 创建循环依赖项。 如何在不将go文件移动到同一个包的情况下解决这种循环依赖?

我已经通过了Cyclic dependencies and interfaces in Golang帖子,但这里的方法有一个无法更改的参数。

1 个答案:

答案 0 :(得分:0)

一种方法是将所有数据类型和接口定义移动到单独的包中,因此所有数据类型和接口定义都依赖于它,但包不依赖于任何其他包。这可以是项目根文件夹中的特殊包schema。甚至是顶级项目本身。