我一直试图找到一种很好的方式来传递Reader接口{},而无需重新创建与io.Reader关联的方法。
这就是我正在使用的:
type EZReader struct {
data *bytes.Reader
}
func (self *EZReader) Replace(input []byte) {
self.data = bytes.NewReader(input)
}
func (self *EZReader) Read(p []byte) (n int, err error) {
return self.data.Read(p)
}
感觉,不对,是否有更好的方法来做到这一点?
我的想法是,然后我可以将这个io.Reader移交给一个函数并将底层数组更改为
我需要它而不必重新分配想要使用它的对象,在本例中是json解码器。
答案 0 :(得分:1)
如果embed是结构中的一个字段,那么该字段的所有方法也可以在结构上调用。所以,如果你写
type EZReader struct {
*bytes.Reader
}
你不必重新实现Read()
。这样的字段就像它被命名为Reader
一样。请注意,您不能以这种方式暴露字段。