golang标准库--io

NameCHC 2020-02-09

一、type Reader interface {

  Read(p []byte)(n int, err error)

}

Reader是一个包含Read方法的接口

Read方法读取len(p)个字节到p中。它返回读取到的字节数和遇到的错误。即使Read返回n<len(p),在调用过程中也会使用所有p作为暂存空间。如果一些可读取的数据没有len(p),按照惯例Read会返回读取到的数据,而不是等待更多。

当Read成功读取n>0个字节后遇到一个错误或者end-of-file条件,它会返回读取到的字节数。它会从同样的调用中返回非空error或者从下次调用中返回错误并且n==0。这个通用案例的一个实例是:一个Reader在输入流的结尾返回非零字节数将会返回err==EOF或者err==nil。接下来的Read将会返回0,EOF。

调用者总是应该在考虑错误之前先处理返回的n>0的字节,这样做能正确地处理发生在读取一些字节后和允许EOF行为这两者的I/O错误

这个接口的Read实现不应该返回0字节和nil错误,除非len(p)==0。调用者应该视这种情况为什么都没有发生,特别注意这不代表读取结束。

Read的实现一定不能返回p

二、

相关推荐

soyo / 0评论 2014-09-16