对于代码库,我使用的是pion/rtpio包。
我正在尝试RTPwriter
通过向其添加Close()
功能来扩展接口。目标是做一个NewRTPWritCloser()
返回带有组合函数的 writeCloser 的函数。
从包中,我看到作者已经创建了接口RTPWriteCloser
type RTPWriteCloser interface {
RTPWriter
io.Closer
}
试图
我这样做是为了重用该功能,这是错误的,但我还不知道替代方案:
func NewRTPWriteCloser(wc io.WriteCloser) rtpio.RTPWriteCloser {
writeCloser := rtpio.NewRTPWriter(wc)
return writeCloser
}
并期望wc有自己的Close()功能准备就绪,因此返回的writeCloser将满足接口RTPWriteCloser。但是,我得到了(missing method Close)一个错误。
函数NewRTPWriter()是这样的:
func NewRTPWriter(w io.Writer) RTPWriter {
return &RawRTPWriter{
dst: w,
}
}
我们如何同时从多个嵌入式接口创建一个具有所有所需功能的实例来满足嵌入接口?
在这个例子中,我们想NewRTPWriteCloser
为接口创建函数RTPWriteCloser
,但是我们不能先创建一个编写器然后再添加关闭函数吗?
我是否必须创建一个 structRTPWriteCloser
并重写接受该 struct 的所有必要函数?(似乎效率低下)
我自己进行了搜索,例如:interfaces inside interface and combining or extending interfaces,但它们并没有让我明白我的问题。
德玛西亚99
波斯汪
相关分类