
io.Reader 和 strings.Reader 的关联
在学习读取器(Reader)时,可能会遇到 io.Reader 和 strings.Reader 这两个类。虽然这二者名称相似,但它们在本质上却是截然不同的,一个是接口(io.Reader),而另一个是结构体(strings.Reader)。
起初,这两个类看似无关,但这并不意味着它们之间没有联系。在 bufio 包中,NewReader 函数的入参类型是 io.Reader。而 strings.Reader 实现了一个方法:func (r *Reader) Read(b []byte) (n int, err error),该方法与 io.Reader 接口中定义的方法一致。
因此,strings.Reader 实现了 io.Reader 接口,这意味着它具备了 io.Reader 规定的功能。通过实现这个接口,strings.Reader 可以作为一个可以读取数据的源被传递给需要 io.Reader 作为参数的函数。
一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!
简单来说,strings.Reader 虽然是一个结构体,但它可以通过实现 io.Reader 接口而提供与该接口相同的功能。因此,在需要 io.Reader 的地方,也可以使用 strings.Reader 对象。
举个例子,在 bufio.NewReader 中,你可以将 strings.Reader 作为入参传递给这个函数,因为 strings.Reader 实现了 io.Reader 接口,并且具备了该接口要求的功能。









