Go io包:读写流与接口设计
深入理解Go io包中的Reader、Writer等核心接口,掌握数据流处理模式 · 难度:入门 · +15XP
Go io包核心概念
Go的io包定义了数据流操作的基本接口,最核心的是Reader和Writer。它们采用组合模式,通过小的接口组合出强大的功能。
1. Reader接口
type Reader interface {
Read(p []byte) (n int, err error)
}Read方法将数据读入字节切片p,返回读取的字节数和可能的错误。当到达文件末尾时,返回io.EOF错误。
2. Writer接口
type Writer interface {
Write(p []byte) (n int, err error)
}3. 常用组合接口
| 接口 | 方法 | 用途 |
|---|---|---|
| ReadCloser | Read + Close | 可关闭的读取流 |
| WriteCloser | Write + Close | 可关闭的写入流 |
| ReadWriter | Read + Write | 双向读写 |
4. 实用函数
io.Copy(dst Writer, src Reader)将src的数据复制到dst,直到EOF。io.ReadAll(r Reader)读取所有字节。
练习提示
在starter_code中,使用io.MultiWriter将标准输出和文件同时写入。提示:先创建文件,然后用io.MultiWriter(os.Stdout, file)。