The-Golang-Standard-Library-by-Example icon indicating copy to clipboard operation
The-Golang-Standard-Library-by-Example copied to clipboard

第一章 1. 1.2 ioutil — 方便的IO操作函数集

Open heweshub opened this issue 2 years ago • 0 comments

1.2. ReadAll 函数 很多时候,我们需要一次性读取 io.Reader 中的数据,通过上一节的讲解,我们知道有很多种实现方式。考虑到读取所有数据的需求比较多,Go 提供了 ReadAll 这个函数,用来从io.Reader 中一次读取所有数据。

func ReadAll(r io.Reader) ([]byte, error)

阅读该函数的源码发现,它是通过 bytes.Buffer 中的 ReadFrom 来实现读取所有数据的。该函数成功调用后会返回 err == nil 而不是 err == EOF。(成功读取完毕应该为 err == io.EOF,这里返回 nil 由于该函数成功期望 err == io.EOF,符合无错误不处理的理念) 这里的ReadAll方法是直接使用了Read方法,而不是ReadFrom,请仔细阅读源码 而且是直接调用io包中的readAll

heweshub avatar May 11 '22 02:05 heweshub