Go语言核心36讲
郝林
《Go并发编程实战》作者,前轻松筹大数据负责人
立即订阅
24140 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
开篇词+学习路线 (3讲)
开篇词 | 跟着学,你也能成为Go语言高手
免费
预习篇 | 写给0基础入门的Go语言学习者
50 | 学习专栏的正确姿势
模块一:Go语言基础知识 (6讲)
01 | 工作区和GOPATH
02 | 命令源码文件
03 | 库源码文件
04 | 程序实体的那些事儿(上)
05 | 程序实体的那些事儿(中)
06 | 程序实体的那些事儿 (下)
模块二:Go语言进阶技术 (16讲)
07 | 数组和切片
08 | container包中的那些容器
09 | 字典的操作和约束
10 | 通道的基本操作
11 | 通道的高级玩法
12 | 使用函数的正确姿势
13 | 结构体及其方法的使用法门
14 | 接口类型的合理运用
15 | 关于指针的有限操作
16 | go语句及其执行规则(上)
17 | go语句及其执行规则(下)
18 | if语句、for语句和switch语句
19 | 错误处理(上)
20 | 错误处理 (下)
21 | panic函数、recover函数以及defer语句 (上)
22 | panic函数、recover函数以及defer语句(下)
模块三:Go语言实战与应用 (27讲)
23 | 测试的基本规则和流程 (上)
24 | 测试的基本规则和流程(下)
25 | 更多的测试手法
26 | sync.Mutex与sync.RWMutex
27 | 条件变量sync.Cond (上)
28 | 条件变量sync.Cond (下)
29 | 原子操作(上)
30 | 原子操作(下)
31 | sync.WaitGroup和sync.Once
32 | context.Context类型
33 | 临时对象池sync.Pool
34 | 并发安全字典sync.Map (上)
35 | 并发安全字典sync.Map (下)
36 | unicode与字符编码
37 | strings包与字符串操作
38 | bytes包与字节串操作(上)
39 | bytes包与字节串操作(下)
40 | io包中的接口和工具 (上)
41 | io包中的接口和工具 (下)
42 | bufio包中的数据类型 (上)
43 | bufio包中的数据类型(下)
44 | 使用os包中的API (上)
45 | 使用os包中的API (下)
46 | 访问网络服务
47 | 基于HTTP协议的网络服务
48 | 程序性能分析基础(上)
49 | 程序性能分析基础(下)
尾声与思考题答案 (2讲)
尾声 | 愿你披荆斩棘,所向无敌
新年彩蛋 | 完整版思考题答案
Go语言核心36讲
登录|注册

41 | io包中的接口和工具 (下)

郝林 2018-11-14
上一篇文章中,我主要讲到了io.Reader的扩展接口和实现类型。当然,io代码包中的核心接口不止io.Reader一个。
我们基于它引出的一条主线,只是io包类型体系中的一部分。我们很有必要再从另一个角度去探索一下,以求对io包有更加全面的了解。
下面的一个问题就与此有关。

知识扩展

问题:io包中的接口都有哪些?它们之间都有着怎样的关系?

我们可以把没有嵌入其他接口并且只定义了一个方法的接口叫做简单接口。在io包中,这样的接口一共有 11 个。
在它们之中,有的接口有着众多的扩展接口和实现类型,我们可以称之为核心接口io包中的核心接口只有 3 个,它们是:io.Readerio.Writerio.Closer
我们还可以把io包中的简单接口分为四大类。这四大类接口分别针对于四种操作,即:读取、写入、关闭和读写位置设定。前三种操作属于基本的 I/O 操作。
关于读取操作,我们在前面已经重点讨论过核心接口io.Reader。它在io包中有 5 个扩展接口,并有 6 个实现类型。除了它,这个包中针对读取操作的接口还有不少。我们下面就来梳理一下。
首先来看io.ByteReaderio.RuneReader这两个简单接口。它们分别定义了一个读取方法,即:ReadByteReadRune
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Go语言核心36讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • 我要攻击之爪
    郝总,身体怎么样了,祝早日康复!
    2018-11-14
    4
  • 我来也
    感觉这个专栏很值。最开始写的11月2号更新完,现在还在更。最近这几章的基础包,我只是过了一遍,觉得写的很详细,但自己消化的很有限。准备过段时间了再回过头来看看。
    2018-11-19
    1
  • 虢国技匠
    二刷
    io包中io.go文件中的相关接口,特别是函数和类型方法的实现的代码写的真是简洁、精炼!看后真是惭愧自己什么时候能写出这么简洁优雅的代码!
    墙裂推荐io.go源码,叹为观止
    2019-12-11
  • 我不会算法
    本以为go标准库, 学习起来会比前面的轻松一些的, 结果发现完全不是这么回事, 感觉比之前学起来更累

    作者回复: 加油加油!

    2019-04-19
  • 嘎嘎
    分为读写wr、rd 两个chan,均为阻塞。writer在wr中无未读取数据时写入,reader读取到数据后,向rd写入读取到的数据的长度。
    2019-04-03
  • manatee
    io包包含的类型需要好好再消化一下

    作者回复: 嗯,必须的,这些类型很核心。

    2019-03-15
  • 虢国技匠
    打卡
    2019-03-08
  • lovyhui
    问题:
    基于非缓冲通道传输数据, 堵塞读, 直至结束. 堵塞写, 根据通道已读计数,计算每一次写入通道的数据, 直至结束
    2018-12-23
  • 有匪君子
    你好,我定义了一个结构体,每次传过来的值都是[]byte类型,想用biranry.write直接写进去。但每次都需要不安排[]byte转换成buffers才能写进结构体。有可以直接写的方法吗?
    2018-11-21
收起评论
9
返回
顶部