bufio包简习| 青训营笔记

79 阅读2分钟

在上青训营课程《GO语言实战案例》的时候,老师讲到了bufio这个包的使用。

bufio

bufio包是 Go 语言标准库中的一个包,提供了缓冲读写功能,用于提高 I/O 操作的性能和灵活性。

bufio.Reader

Reader 类型实现了对数据的缓冲读取。它包装了一个 io.Reader 对象,并提供了一些额外的方法,如 ReadByte()、ReadLine()、ReadString() 等,用于逐字节或按行读取数据,并提供了缓冲功能,减少了频繁的系统调用。

ReadByte()方法用于从缓冲中读取一个字节,并返回读取的字节和可能发生的错误。

ReadLine()方法用于从缓冲中读取一行数据,返回一个字节切片和可能发生的错误。如果一行超过缓冲大小,该方法会返回 ErrBufferFull 错误。

ReadString(delim byte)方法用于从缓冲中读取以指定分隔符 delim 结尾的字符串,返回一个字符串和可能发生的错误。

bufio.Writer

Writer 类型实现了对数据的缓冲写入。它包装了一个 io.Writer 对象,并提供了一些额外的方法,如 WriteString()、WriteByte()、Flush() 等,用于逐字节或按块写入数据,并提供了缓冲功能,减少了频繁的系统调用。

WriteString(s string) 方法用于将一个字符串写入缓冲,并在必要时将缓冲内容写入底层 io.Writer 对象。

WriteByte(c byte) 方法用于将一个字节写入缓冲,并在必要时将缓冲内容写入底层 io.Writer 对象。

Flush() 方法用于将缓冲中的数据写入底层 io.Writer 对象。

使用 bufio 包可以有效地减少 I/O 操作的次数,提高程序的性能。它特别适用于频繁读写小块数据的场景,例如处理网络通信、文件操作等。

需要注意的是,bufio 包提供的缓冲功能是基于内存的,因此在处理大量数据时,需要注意缓冲区的大小选择,以避免内存溢出或过度消耗内存。