现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

如何阅读Go的源码

2020-01-17 16:46 工业·编程 ⁄ 共 728字 ⁄ 字号 暂无评论

Go 源码中,应该可分为与语言息息相关的部分,和官方提供的标准库。与语言实现相关的肯定是最难的,不是那么容易理解。可以先主要看标准库,其他的可以先大概了解下,待准备充足,再开始艰难的任务。

第一步,先把源码目录整体扫一遍,大概看看涉及了哪些模块,再挑自己喜欢的部分进行更深一步的学习与研究。建议每个库都看下官方文档,简单写个 hello world,才会体悟更深。如果连 hello world 都写不出来,这个模块的源码暂时就没必要研究了,先学好基础吧。毕竟,包的使用不仅与语言相关,还涉及具体场景和实现原理,这都是要学习的。

第二步,对包的使用熟悉理解后,就可以阅读源码了,但此时最好还是不要太抠细节,大概理解涉及设计思想,整体流程。源码阅读可以通过画 UML 的方式辅助,从纵向和横向帮助理解。代码设计时,一般最容易想到的就是按顺序方式写,很快就能搞定。但当项目变大,抽象的模块会越来越多,抽象出接口和具体的实现,实现可能包含其他类型的组合。搞明白这些关系,对于理解源码实现会较有帮助。我觉得,经过这一步,包的使用就很得心应手了。

第三步,如果顺利经过前面两步,如果该包没有太多领域知识,接下来的源码阅读就比较简单了。Go 语言的特点就是简洁易读,没什么语法糖。当然,如果是一些实现比较复杂的包,你还需知道它们的底层原理,就比如 net/http 包,你得对 http 协议熟悉到一定程度,才可能从细节研究源码实现。 是否要到第三步,视自己的情况而定,能到这一步应该就能达到源码随意改,基本没啥后顾之忧的层次了。

推荐两本书,分别是 Go 语言学习笔记,后半部分有源码的解读。另外一本,Go 语言高级编程,对 cgo 和汇编有非常仔细的介绍。

作者:波罗学

还有一本尚未出版的《Go 语言设计与实现》。

给我留言

留言无头像?