重用Go语言接口而不触发循环依赖的最佳模式是什么

unguejic  于 2023-02-06  发布在  Go
关注(0)|答案(1)|浏览(124)

我有一个简单的包声明,其中包“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)
}
2ul0zpep

2ul0zpep1#

在go中定义接口是最好的做法,所以在package b中,使用package b中的函数所需的方法来定义接口。
您仍然可以在package a中添加其他函数。如果您还需要在package a中定义接口,则可以嵌入来自package b的接口。

相关问题