假设我有两个接口:

interface A {...}
interface B {...}

现在,我想定义一个函数来接受接口A和B的一些参数(即,param同时实现接口A和B):

func test(param A & B) {...} // any similar syntax?

我不想每次引用多个接口时都编写一个新接口来嵌入其他接口,如下所示:

interface C {
  A
  B
}
func test(param C) {...} //ok with 2 interfaces, what about 3, 4 or even 9?

我不知道如何用高朗来表达交叉口类型,有什么 idea 吗?

推荐答案

在围棋中是不可能的,因为它是一个模糊的控制流,围棋是为了避免.

类型不一定要按名称实现接口,所以我的建议是 for each 参数声明匿名接口,其中只包含该函数所需的方法.

Go相关问答推荐

Go:嵌入类型不能是类型参数""

在Go中根据命名空间/字符串生成UUID

将类型定义为泛型类型实例化

创建使用逗号而不是加号分隔OU的CSR

戈姆:如何将一对一联系起来?

Golang String

Golang在不写入磁盘的情况下为jpeg图像生成一致的哈希

Go 中带有回调的 MiniDumpWriteDump

使用反射在Go中递归迭代 struct 体和集合字段

如何在 Go 中将 int 转换为包含 complex128 的泛型类型?

如何使用泛型将接口转换为指定类型

当图像是对象数组的元素时,如何显示存储为页面资源的图像?

读取非UTF8编码的文件内容并正确打印出来

将 big.Int 转换为 [2]int64,反之亦然和二进制补码

如何使用 fyne Go 使用 canvas.NewText() 使文本可滚动

通过 golang 中的 gremlin-go 库嵌入 gremlin 服务器

golang 如何从字符串中查找表情符号?

如何从 docker-compose 命令运行 2 个不同的命令:

Go generics:我会在哪里使用 any 而不是 interface{}?

Gorilla/Mux 和 Websocket 竞赛条件,这安全吗?