为了账号安全,请及时绑定邮箱和手机立即绑定

实现阅读器接口

实现阅读器接口

Go
Qyouu 2021-09-13 14:15:27
我了解 Go 接口的一般概念。但是,我最近正在研究实现该io.Reader接口,这让我感到困惑。我发现这篇文章并没有太大帮助。首先,接受的答案是 usingio.Reader的Read函数,据我所知从未实现过。其次,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。
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您传递Read字节切片。Read应该把字节放在里面。由于切片只是对数组的引用,更改切片的内容会更改底层数组,因此 的调用者Read可以只检查它传递给它的切片。

ioutil.ReadAll创建一个缓冲区并调用ReadFrom它。重复ReadFrom调用Read,增加缓冲区的大小,直到Read通过返回io.EOF错误来告诉它已耗尽。自己看看

您链接的答案确实实现了该io.Reader接口。它正在声明一个方法Read(p []byte) (n int, e error)。这就是所需要的。


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信