组合或扩展接口?

Ell*_*nce 4 interface go

我有两个接口:

type Request interface {
    Version() string
    Method() string
    Params() interface{}
    Id() interface{}
}

type Responder interface {
    NewSuccessResponse() Response
    NewErrorResponse() Response
}
Run Code Online (Sandbox Code Playgroud)

我想制作一个RequestResponder结合这两者的界面。这可能吗,还是我必须创建具有所有 6 个功能的第三个界面?

小智 7

允许接口嵌入,如规范中所述

接口T可以使用(可能是限定的)接口类型名称E来代替方法规范。这称为嵌入接口;它将所有(导出和非导出)方法添加到接口中。ETET

这是在 Go 的标准库中完成的(一个例子是io.ReadCloser)。

在你的问题中,RequestResponder将被构造为:

type RequestResponder interface {
    Request
    Responder
}
Run Code Online (Sandbox Code Playgroud)