Go io包:输入输出接口与流式处理
掌握io.Reader和io.Writer接口,学习如何高效处理数据流,包括组合、缓冲和自定义实现。 · 难度:入门 · +15XP
io包核心接口
Go的io包定义了数据流操作的核心抽象:Reader和Writer。任何实现了这两个接口的类型都可以用于流式数据传输。
Reader 接口
type Reader interface {
Read(p []byte) (n int, err error)
}Writer 接口
type Writer interface {
Write(p []byte) (n int, err error)
}常用组合
// 从字符串读取
r := strings.NewReader("Hello, World!")
io.Copy(os.Stdout, r)
// 限制读取
limited := io.LimitReader(r, 5)
// 多写入器
mw := io.MultiWriter(os.Stdout, &buf)
| 函数 | 作用 |
|---|---|
| io.Copy | 从Reader复制到Writer |
| io.ReadAll | 读取所有数据到内存 |
| io.Pipe | 创建同步管道 |
练习提示
请实现一个CountReader结构体,它包装一个Reader并统计读取的字节数。注意错误处理,特别是io.EOF。