全文转载自:go 的IO库该如何选择
Go语言里使用io.Reader和io.Writer两个 interface 来抽象I/O,他们的定义如下。
type Reader interface {
Read(p []byte) (n int, err error)
}
type Writer interface {
Write(p []byte) (n int, err error)
}
io.Reader
接口代表一个可以从中读取字节流的实体,而io.Writer
则代表一个可以向其写入字节流的实体。
io.Reader/Writer 常用的几种实现
- net.Conn: 表示网络连接。
- os.Stdin, os.Stdout, os.Stderr: 标准输入、输出和错误。
- os.File: 网络,标准输入输出,文件的流读取。
- strings.Reader: 字符串抽象成 io.Reader 的实现。
- bytes.Reader: []byte抽象成 io.Reader 的实现。
- bytes.Buffer: []byte抽象成 io.Reader 和 io.Writer 的实现。
- bufio.Reader/Writer: 带缓冲的流读取和写入(比如按行读写)。
网友评论