从 Go 1.16 开始,ReadAll
函数已被标记为废弃,建议使用 io.ReadAll
函数来代替。
io.ReadAll
函数的用法与 ioutil.ReadAll
函数基本相同,都是从一个 io.Reader
中读取所有数据,直到遇到错误或者读取到了 EOF
(文件结束符),然后返回读取到的所有数据。如果读取成功,函数将返回 err == nil
,否则返回一个非 nil
的错误对象。
以下是一个示例,演示了如何使用 io.ReadAll
函数从一个 http.Response
中读取所有数据:
resp, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(string(body))
在上面的代码中,我们首先使用 http.Get
函数向 https://example.com
发送一个 GET 请求,并得到一个 http.Response
对象 resp
。然后,我们使用 defer
语句来确保在函数返回之前关闭 resp.Body
。接下来,我们使用 io.ReadAll
函数从 resp.Body
中读取所有数据,并将结果保存在一个字节数组 body
中。最后,我们将 body
转换为字符串,并将其打印到控制台中。