一文带你完整了解Go语言IO基础库
1.IO库
首先来看一下golang最基础的IO库,包名为"io", 它包括两大部分功能:
第一部分定义了最基本的流操作接口,包括Writer, Reader, Seeker, Closer这几个以及相关的组合接口。分别表达写入,读取, 偏移读和关闭操作处理。
全局类图以及关系如下,方便大家更直观的理解:
图片
以下对接口进行了源码摘取并进行中文注释:
/*
Reader 是包装基本 Read 方法的接口。
Read 将最多 len(p) 个字节读取到 p 中。它返回读取的字节数 (0 0 字节。这样做可以正确处理读取一些字节后发生的 I/O 错误以及允许的 EOF 行为。
如果 len(p) == 0,Read 应始终返回 n == 0。如果已知某些错误条件(例如 EOF),则可能会返回非零错误。
不鼓励 Read 的实现返回带有 nil 错误的零字节计数,除非 len(p) == 0 时。调用者应将返回 0 和 nil 视为表示没有发生任何事情;特别是它不指示 EOF。
*/
type Writer interface {
Write(p []byte) (n int, err error)
}
/*
Writer 是包装基本 Write 方法的接口。
Write 将 p 中的 len(p) 个字节写入底层数据流。它返回从 p (0