Go bufio:带缓冲的I/O操作
学习bufio包如何通过缓冲减少系统调用,提高文件、网络等I/O操作的性能。 · 难度:入门 · +15XP
bufio包简介
bufio包通过内部缓冲区减少对底层Reader/Writer的访问次数,大幅提升I/O性能。它提供了Scanner、Reader和Writer等实用类型。
Scanner 行读取
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}带缓冲的写入
w := bufio.NewWriter(os.Stdout)
w.WriteString("Hello, ")
w.WriteString("World!
")
w.Flush() // 重要:刷新缓冲区| 方法 | 说明 |
|---|---|
| Scan | 读取下一个token |
| Text | 获取当前token文本 |
| Flush | 将缓冲数据写入底层Writer |
| ReadLine | 读取一行(已弃用,推荐Scan) |
自定义分割函数
scanner.Split(bufio.ScanWords) // 按单词分割练习提示
使用bufio.Scanner读取一个多行字符串,统计每行的单词数。注意调用Flush确保所有数据写入。