组合或扩展接口?
问题描述:
我有两个接口:组合或扩展接口?
type Request interface {
Version() string
Method() string
Params() interface{}
Id() interface{}
}
type Responder interface {
NewSuccessResponse() Response
NewErrorResponse() Response
}
我想作一个RequestResponder
接口结合了这两种。这是可能的,还是我必须创建一个全部6个功能的第三个界面?
答
接口嵌入是允许的,如在spec记载:
接口
T
来代替方法规范的使用(可能合格)接口类型名称E
。这被称为嵌入接口E
在T
;它将E
的所有(导出和非导出)方法添加到接口T
。
这是整个Go的标准库完成(一个例子是io.ReadCloser
)。
在你的问题,RequestResponder
将被构建为:
type RequestResponder interface {
Request
Responder
}
操场https://play.golang.org/p/NcQJPQ3GHI –