📅  最后修改于: 2023-12-03 15:01:01.638000             🧑  作者: Mango
在 Golang 中,io.ReadAtLeast()
函数是用于读取指定长度数据的函数。这个函数会尽可能地读取指定长度的数据,除非 EOF(文件结束)被遇到。
func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)
函数有三个参数:
r
:读取数据的源,类型为 io.Reader
。buf
:读取到的数据将存储在 buf
中,类型为 []byte
。min
:期望读取的最小字节数。函数会尽可能多的读取数据到 buf
中,直到满足最小要求或者 EOF
处理错误。
如果进一步尝试读取数据,则函数将返回缺少字节数的错误。
package main
import (
"io"
"log"
"strings"
)
func main() {
r := strings.NewReader("Hello, Golang!")
buf := make([]byte, 7)
// 读取至少 7 个字节
n, err := io.ReadAtLeast(r, buf, 7)
if err != nil {
log.Fatalf("failed to read data: %v", err)
}
log.Printf("read %d bytes of data: %q", n, buf)
}
输出:
2021/08/21 22:25:34 read 7 bytes of data: "Hello, "
io.ReadAtLeast()
函数仅读取指定长度的数据,不会读取更多或更少的数据。如果需要从 io.Reader
中读取更多或更少的数据,可以使用其他函数,例如 io.ReadFull()
,io.Copy()
,io.CopyN()
等。