面试题答案
一键面试-
bufio.Reader内部缓冲区默认大小: 在Go语言的
bufio.Reader
中,其内部缓冲区的默认大小是4096字节(4KB)。这个默认值定义在bufio
包的源码中。 -
bufio.Reader从底层io.Reader读取数据并填充到缓冲区的过程:
bufio.Reader
在初始化时,会创建一个指定大小(默认4096字节)的缓冲区。- 当调用
bufio.Reader
的读取方法(如Read
、ReadLine
等)时:- 首先检查缓冲区中是否还有未读取的数据。如果有,直接从缓冲区中读取数据返回给调用者。
- 如果缓冲区中没有数据了,
bufio.Reader
会调用底层的io.Reader
的Read
方法,尝试从底层数据源读取数据到缓冲区。 - 底层
io.Reader
的Read
方法会将数据读取到bufio.Reader
的缓冲区中。然后bufio.Reader
再从缓冲区中读取数据返回给调用者。 - 这个过程会不断重复,直到满足读取方法的结束条件(如读取到指定数量的数据、遇到换行符等)或者底层
io.Reader
返回错误(如到达文件末尾等)。