bufio
Golang 标准库 - bufio
bufio 包实现缓冲 I/O。它包装了一个 io.Reader 或 io.Writer 对象,创建另一个对象(Reader 或 Writer),该对象也实现接口,但为文本 I/O 提供缓冲和一些帮助。
- 从标准输入读取一行数据
func ReadLine() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := scanner.Text()
fmt.Println("input:", line) // Println will add back the final '\n'
if line == "exit" {
fmt.Println("exit !!!")
break
}
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
}
- 从标准输入读取一个单词
func ReadWord() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
input := scanner.Text()
fmt.Println("input:", input) // Println will add back the final '\n'
if input == "exit" {
fmt.Println("exit !!!")
break
}
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
}
- bufio.Reader 和 bufio.Writer 示例
func BufReader() {
reader := bufio.NewReader(os.Stdin)
for {
//input, _, _ := reader.ReadRune()
input, _, _ := reader.ReadLine()
fmt.Println("input:", string(input))
if string(input) == "exit" {
fmt.Println("exit !!!")
break
}
}
}
func BufWriter() {
writer := bufio.NewWriter(os.Stdout)
_, err := writer.WriteString("hello world")
if err != nil {
return
}
err = writer.Flush()
if err != nil {
return
}
}
🛒 站长推荐(京东联盟)
- 《Go 程序设计语言》(Go 语言圣经,机械工业出版社) —— Go 官方团队出品,公认入门第一书
- 《Go 语言实战》(异步图书,人民邮电出版社) —— 实战导向,面试前巩固工程手感
- 《Go 语言编程之旅:一起用 Go 做项目》(博文视点,电子工业出版社) —— 项目驱动入门,从零写出完整应用
- Keychron K1Max 矮轴机械键盘(Mac/Win 双系统,QMK/VIA 开源改键) —— 轻薄矮轴 + 开源固件,程序员桌面常客
- 罗技 MX Master 3S 无线鼠标(Flow 跨屏,静音电磁滚轮) —— 人体工学设计,写代码一整天手不酸
以上链接含京东联盟推广代码;通过链接购买本站可能获得少量佣金,不影响你的购买价格。
📮 关注公众号「GO语言入门之路」
每周更新 Go + AI 应用开发实战:AI 面试官完整项目、MCP、Agent 工程化,完整源码随文章首发。
微信扫码,或搜索「GO语言入门之路」关注,第一时间获取系列更新与源码,不再错过任何一篇。