Go学习笔记(1)—io.Reader/Writer
一、概念
io.Reader/Writer
是Go
语言中的pkg的一个核心interface
。由此展开很多原生接口,可以在开发过程中,通过这个interface
来实现不同的io类型之间的转换。
如上图所示,围绕io.Reader/Writer
,有几个常用的实现:
- net.Conn, os.Stdin, os.File: 网络、标准输入输出、文件的流读取
- strings.Reader: 把字符串抽象成Reader
- bytes.Reader: 把
[]byte
抽象成Reader - bytes.Buffer: 把
[]byte
抽象成Reader和Writer - bufio.Reader/Writer: 抽象成带缓冲的流读取(比如按行读写)
二。实际场景
1.将base64编码成字符串
encoding/base64
包中:
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
这个用来做base64
编码,但是仔细观察发现,它需要一个io.Writer作为输出目标,并用返回的WriteCloser
的Write方法将结果写入目标,下面是Go官方文档的例子
input := []byte("foo\x00bar")
encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout