组合或扩展接口?

时间:2017-03-15 22:20:40

标签: go interface

我有两个界面:

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

type Responder interface {
    NewSuccessResponse() Response
    NewErrorResponse() Response
}

我想创建一个RequestResponder接口,它结合了这两个接口。这是可能的,还是我必须创建一个包含所有6个函数的第三个接口?

1 个答案:

答案 0 :(得分:1)

允许使用界面嵌入,如spec

中所述
  

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

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

在您的问题中,RequestResponder将构建为:

type RequestResponder interface {
    Request
    Responder
}