io.ReadFull 返回从Reader读取的字节数量和错误信息
1 | ReadFull(r Reader, buf []byte) (n int, err error) |
ReadFull 经常出现在其它辅助函数中,比如随机数生成函数 rand.Read
1 | package rand |
除了判断 err 是否不为空之外,经常有代码还会判断这个 n 的长度是否和 b 的长度一样,其实这是没必要的,io.ReadFull 内部保证了如果 err == nil 那么 n == len(b)。
如实现代码所示,如果 Reader 内字节长度小于所需长度那么一定会返回 EOF 错误或者 ErrUnexpectedEOF 错误。
1 | func ReadFull(r Reader, buf []byte) (n int, err error) { |
使用下面实际代码运行来看,确实不需要判断返回长度
1 | package main |