- 不要纠结代码细节,要对所阅读的项目有全局整体的认识。
- 阅读README.md文档,优秀的开源项目都有README.MD文档,通过阅读这种文档,让我们对项目是什么,能做什么,怎么用有一个整体的认识。
- 在使用与调试中去验证自己的理解。
- 用思维导图可以更好帮我们记录代码的执行流程。
- 不要想着一口气吃成胖子。
2023-02-23 16:03:10Go项目源码阅读小技巧
您现在的位置是: 首页 > Go > Go项目源码阅读小技巧
源码阅读原则
小技巧
对一个Go语言库(标准库或第三方)阅读正常源码的正常顺序是:
库函数 > 结构定义 > 结构函数
理清库函数
所谓的库函数,在Go语言的库中,就是这个库对外的提供功能的函数,也就是首字母大写的函数。
我们使用go doc
命令,再配置linux的grep
命令,就可以筛选出一个库的库函数了,以context包为例:
go doc context | grep "^func"
执行结果:
func WithCancel(parent Context) (ctx Context, cancel CancelFunc)
func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)
对于第三方,我们把源码下载到本地后,通过cd命令,进入到源码目录,再执行上述命令,也一样可以获得库函数列表,如:
go doc | grep "^func"
梳理结构的定义
一个优秀库一般都会定义许多struct进行功能封装,所以明白一个库中的struct的定义,对我们理解库的逻辑与功能至关重要。
我们同样使用go doc
来筛选struct,以time包为例:
go doc time | grep "^type"|grep struct
执行结果:
type Location struct{ ... }
type ParseError struct{ ... }
type Ticker struct{ ... }
type Time struct{ ... }
type Timer struct{ ... }
探究结构方法
在第二步中,梳理了一个Go的结构定义,也就是梳理一个库有多少个struct,而这些struct会有对应的方法(method),用于实现功能,通过理解struct的方法,就可以明白这个struct在这个库到底是用来做什么的。
对于struct方法,也可以先看那些以大写字母开头的方法,因此这些是这个struct提供对外的功能。
小结
理清库函数,可以让我们明白一个库的对外功能,梳理结构定义,可以让我们明白一个库如何组织代码去提供功能,最后探究结构方法,可以明白具体的实现逻辑;只要我们遵循这样的方法去阅读Go库的源码,相信一定会事半功倍的!
如何阅读Golang的源码
记录阅读go源码的博客
Go项目源码阅读小技巧
关键字词: Go项目源码阅读小技巧
上一篇: git仅跟踪指定文件和文件夹-或者忽略指定文件和文件夹
下一篇: 设置go env -w GO111MODULE=off报错does not override conflicting OS environment varia