我有一个简单的包声明,其中包“a”定义了一个接口“A”,但我需要使用包“b”中的接口进行类型推断,然后在“a”的DoRequest()
中实现b.Request()
,这意味着必须以循环的方式导入包。
我的问题是,是否有一个简单的方法来避免编译器循环依赖错误?
注意:避免将“a”和“B”放在同一个 Package 中
package b
import "a"
func Request(t a.A){
m := t.GetMethod()
payload := t.GetPayload()
}
和包“a”声明
package a
import "b"
type A interface {
GetMethod () string
GetPayload () string
}
type ImplimentA struct {
}
func (imp ImplimentA)GetMethod() string{
return ""
}
func (imp ImplimentA) GetPayload() string{
return ""
}
func (imp ImplimentA) DoRequest(){
b.Request(imp)
}
1条答案
按热度按时间2ul0zpep1#
在go中定义接口是最好的做法,所以在
package b
中,使用package b
中的函数所需的方法来定义接口。您仍然可以在
package a
中添加其他函数。如果您还需要在package a
中定义接口,则可以嵌入来自package b
的接口。