41 | io包中的接口和工具 (下)
上一篇文章中,我主要讲到了io.Reader的扩展接口和实现类型。当然,io代码包中的核心接口不止io.Reader一个。
我们基于它引出的一条主线,只是io包类型体系中的一部分。我们很有必要再从另一个角度去探索一下,以求对io包有更加全面的了解。
下面的一个问题就与此有关。
知识扩展问题:
io包中的接口都有哪些?它们之间都有着怎样的关系?
我们可以把没有嵌入其他接口并且只定义了一个方法的接口叫做简单接口。在io包中,这样的接口一共有 11 个。
在它们之中,有的接口有着众多的扩展接口和实现类型,我们可以称之为核心接口。io包中的核心接口只有 3 个,它们是:io.Reader、io.Writer和io.Closer。
我们还可以把io包中的简单接口分为四大类。这四大类接口分别针对于四种操作,即:读取、写入、关闭和读写位置设定。前三种操作属于基本的 I/O 操作。
关于读取操作,我们在前面已经重点讨论过核心接口io.Reader。它在io包中有 5 个扩展接口,并有 6 个实现类型。除了它,这个包中针对读取操作的接口还有不少。我们下面就来梳理一下。
首先来看io.ByteReader和io.RuneReader这两个简单接口。它们分别定义了一个读取方法,即:ReadByte和ReadRune。
但与io.Reader接口中Read方法不同的是,这两个读取方法分别只能够读取下一个单一的字节和 Unicode 字符。
我们之