Reader 接口的定义如下:
type Reader interface { Read(p[]byte)(n int ,err error) }
Reader 方法
func ReadFromSource(reader io.Reader,num int)([]byte,error) { p:=make([]byte,num) // 创建一个个数为num的数组切片 n,err:=reader.Read(p) // ①调用.Read方法 if n>0 { return p[:n],nil } return p,err }
①调用.Read方法
// read 接口 入参 byte 数组p ,返回 int类型 n 和 error type Reader interface { Read(p []byte) (n int, err error)// ②调用read方法 }// 翻译文档:read入参长度大于len(p) 将返回0~len(p)和任何的错误。即使读取的长度小于len(p),它会再调用的期间申请整个p长度的空间。如果有些数据是可用的,而不是len(p)字节,Read常规返回可用的数据,而不是等待更多的数据。如果在成功read了大于零的字节过程发生了错误或者end-of-file情况。会返回non-nil或者在后续的调用返回错误。
②调用read方法 func (b *Buffer) Read(p []byte) (n int, err error) { b.lastRead = opInvalid /