猿问

bytes.Reader,替换底层 []byte 数组

我一直在寻找一种很好的方法来传递 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 解码器。


慕姐8265434
浏览 275回答 1
1回答

largeQ

如果您在结构中嵌入一个字段,则该字段的所有方法也可以在该结构上调用。所以如果你写type EZReader struct {    *bytes.Reader}您不必重新实现Read(). 这样一个字段的行为就像它被命名为Reader。请注意,您无法避免以这种方式公开字段。
随时随地看视频慕课网APP

相关分类

Go
我要回答