实现阅读器接口

我了解 Go 接口的一般概念。但是,我最近正在研究实现该io.Reader接口,这让我感到困惑。我发现这篇文章并没有太大帮助。

首先,接受的答案是 usingio.ReaderRead函数,据我所知从未实现过。其次,Read函数在类似ioutil.ReadAll. 它需要一些实现io.Reader接口的东西并返回一个字节片。我不明白只返回一个int和的东西是如何err被处理成一个字节片的。

编辑:

我在 go-nuts IRC 频道中得到了帮助,这是关于您可能如何实际实现一个http://play.golang.org/p/ejpUVOx8jR的提供的答案。非常感谢 Go 社区。

编辑2:

正如下面所指出的,在 strign 大于缓冲区的情况下,上面的实现将失败。这是一个更理智的实现http://play.golang.org/p/t4Zg8TnF33


Qyouu
浏览 202回答 3
3回答

达令说

您传递Read字节切片。Read应该把字节放在里面。由于切片只是对数组的引用,更改切片的内容会更改底层数组,因此 的调用者Read可以只检查它传递给它的切片。ioutil.ReadAll创建一个缓冲区并调用ReadFrom它。重复ReadFrom调用Read,增加缓冲区的大小,直到Read通过返回io.EOF错误来告诉它已耗尽。自己看看。您链接的答案确实实现了该io.Reader接口。它正在声明一个方法Read(p []byte) (n int, e error)。这就是所需要的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go