ioutil.ReadAll 仅使用数据而不复制字节数组的替代方案

ioutil.ReadAll alternative that only consumes data, without duplicating the byte array

mux.HandleFunc 调用,我有一个类型为 multipart.Filehttp.Request.FormFile。我正在对浏览器的文件上传速度进行基准测试,所以我不需要验证数据。我当前的代码是:

fileBytes, err := ioutil.ReadAll(file)
if err != nil {
    fmt.Println(err)
}
return len(fileBytes)

ioutil.ReadAll 进行了不必要的复制。有没有其他方法可以验证我是否拥有所有数据而无需创建副本?

可选,我可以用什么替换 len(fileBytes)?如果这应该在一个单独的问题中,你可以忽略它。

我尝试了什么

.ReadAll 调用 readAll calling bytes.Buffer.ReadFrom 调用 io.Reader.Read,我找不到。

使用 io.Copy() to copy the content of the file into ioutil.Discard 不存储但丢弃数据。 io.Copy() 复制直到到达 EOF(或发生错误),并且 returns 复制的字节数:

n, err := io.Copy(ioutil.Discard, file)