io.reader和strings.reader的关联
在学习reader时,你可能会遇到io.reader和strings.reader,前者是一个接口,后者是一个结构体。尽管乍一看似乎没有关联,但两者之间存在内在联系。
实现关系
strings.reader结构体实现了io.reader接口。这意味着它提供了func (r *reader) read(b []byte) (n int, err error)方法,该方法与io.reader接口中声明的read方法签名完全一致。
如何使用
任何需要io.reader作为参数的函数或方法都可以接受strings.reader作为参数。例如,你可以使用strings.reader作为bufio.newreader的输入。
尽管io.reader是一个接口,但无法直接实例化。相反,你必须传入一个实现了它的方法的对象,例如strings.reader。
实例说明
如你所遇到的代码示例所示:
r := strings.NewReader("hello world !") // strings.Reader io.Reader reader := bufio.NewReader(r)
传入的是strings.reader,它实现了io.reader,因此可以满足bufio.newreader需要io.reader参数的要求。
以上就是io.Reader和strings.Reader:一个接口,一个结构体,如何关联?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系 yyfuon@163.com