组合或扩展接口?

组合或扩展接口?

问题描述:

我有两个接口:组合或扩展接口?

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

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

我想作一个RequestResponder接口结合了这两种。这是可能的,还是我必须创建一个全部6个功能的第三个界面?

接口嵌入是允许的,如在spec记载:

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

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

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

type RequestResponder interface { 
    Request 
    Responder 
} 
+0

操场https://play.golang.org/p/NcQJPQ3GHI –