⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Go bufio:带缓冲的输入输出

学会使用bufio包提高I/O效率,处理带缓冲的读写、行读取和扫描。 · 难度:入门 · +15XP

为什么需要缓冲I/O

直接使用io.Reader每次读取系统调用开销大。bufio包通过内部缓冲区减少系统调用次数,显著提升性能。

bufio.Reader

包装一个io.Reader提供缓冲读取:

r := bufio.NewReader(os.Stdin)
line, err := r.ReadString('
')
fmt.Print("输入: ", line)

bufio.Writer

缓冲写入,需要Flush将缓冲区数据真正写入:

w := bufio.NewWriter(os.Stdout)
w.WriteString("Hello, buffered world!
")
w.Flush() // 重要!

Scanner 便捷扫描

按行扫描输入:

scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    fmt.Println("扫描到:", scanner.Text())
}

常用方法

方法说明
ReadLine读取一行(不包含换行符)
ReadBytes(delim)读取到指定分隔符
Peek(n)预览n个字节而不消费
WriteString写入字符串
Flush刷新缓冲区

练习提示

编写一个函数,使用bufio.Scanner从标准输入读取多行,统计每行单词数并输出。注意处理空行和文件结束。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 142 篇
0 完成
🔥 0