Go-标准库-bufio(一)
Go 标准库中的 bufio
包提供了缓冲读写的功能,它能够减少系统调用的次数,从而提高 I/O 操作的效率。
缓冲读写
缓冲读写是一种将 I/O 操作分成多个步骤进行的方法,它将输入或输出数据先缓存到内存中,等到缓存区满或达到一定数量时,再一次性将数据写入磁盘或读入内存。这种方法可以减少系统调用的次数,提高 I/O 操作的效率。
bufio
包提供了缓冲读写的功能,它包装了一个 io.Reader
或 io.Writer
对象,并提供了 Reader
和 Writer
两种类型,分别用于读取和写入数据。
缓冲读取
bufio.Reader
类型提供了缓冲读取的功能,它包装了一个 io.Reader
对象,并提供了一系列的方法用于从缓冲区中读取数据。下面是一个简单的缓冲读取示例:
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
str := "Hello, World!\n"
reader := bufio.NewReader(strings.NewReader(str))
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
fmt.Print(line)
}
}
在上面的示例代码中,我们定义了一个字符串 str
,然后使用 strings.NewReader()
函数创建了一个 io.Reader
对象。接着,我们使用 bufio.NewReader()
函数创建了一个 bufio.Reader
对象,并将其包装了 io.Reader
对象。最后,我们使用 ReadString()
方法从缓冲区中读取数据,并打印出来。
缓冲写入
bufio.Writer
类型提供了缓冲写入的功能,它包装了一个 io.Writer
对象,并提供了一系列的方法用于向缓冲区中写入数据。下面是一个简单的缓冲写入示例:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Create("output.txt")
if err != nil {
panic(err)
}
defer file.Close()
writer := bufio.NewWriter(file)
for i := 1; i <= 100; i++ {
fmt.Fprintln(writer, i)
}
writer.Flush()
}
在上面的示例代码中,我们使用 os.Create()
函数创建了一个名为 output.txt
的文件。接着,我们使用 bufio.NewWriter()
函数创建了一个 bufio.Writer
对象,并将其包装了文件对象。然后,我们使用 Fprintln()
方法将数字 1 到 100 写入缓冲区中,并使用 Flush()
方法将缓冲区中的数据一次性写入文件中。
相关文章
- Go REFLECT Library | 06 - reflect.Type 和 reflect.Value 应用
- 1.Go语言之标准库学习记录(1)
- 如何优雅的通过Shell脚本一键部署GO项目到服务器 |Go主题月
- 「Go工具箱」一个简单、易用的多错误管理包:go-multierror
- Go 语言面向对象编程特性的实现
- Go调度系列--goroutine和调度器生命周期(三)
- 相比高人气的Rust、Go,为何 Java、C 在工具层面进展缓慢?
- go的数据类型-复合数据类型-map(二)
- Go-标准库-log(一)
- Go-标准库-sort(二)
- Go-标准库-context(一)
- Go-标准库-runtime(四)
- Go-包管理-go mod(一)
- Go-包管理-go install
- Go—go-cache包学习详解编程语言
- Go语言实现RSA和AES加解密
- 轻松搞定Go语言连接MySQL(go连接mysql)
- 如何用 GVM 管理 Go 项目
- Go 中对栈中函数进行内联
- 徒手用Go编写Redis迈向新技术世界的旅程(徒手用go写个redis)
- Go语言搭建Oracle数据库快速连接方法(go语言连接oracle)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- GO语言学习指南