Go语言中Reader接口定义了一个Read操作,实现了Reader接口的都有Read这个函数。 (推荐学习:go)
接口的定义如下:
type Reader interface { Read(p []byte) (n int, err error) }
一次Read调用最多读取len(p)字节的数据到缓冲区p中
n表示这一次实际读取到字节数,(0 <= n <= len(p))
err 表示这次读取操作的报错(如果有的话,没有则是nil)
即使读取到的字节数n小于len(p),在函数调用过程中调用主体也可能使用全部的p的空间(不知道这个说明是想表达什么)
当read到数据的时候,即使不够len(p)(此时IO缓存中没有数据了),Read操作通常会直接返回获取到的数据而不是继续等待IO缓存中到达