原文链接: 读 Go 源码,能够试试这个工具
编程倒退至今,从面向过程到面向对象,再到当初的面向框架。写代码变成了一件越来越容易的事件。
学习根底语法,看看框架文档,几天工夫搞出一个小我的项目并不是一件很难的事件。
但工夫长了就会发现,始终这样飘在外表是不行的,技术永远得不到晋升。
想要技术水平有一个质的飞跃,有一个很好的办法,就是读源码。
但读源码真的是一件很有挑战的事件。
想想当年本人读 Django 源码,从启动流程开始看,没走几步就放弃了,而且还放弃了很屡次。
这么说吧,我对 Django 启动局部的代码,就像对英文单词 abandon 那么相熟。
起初总结经验,发现是办法不对。
次要起因是一上来就深刻细节了,事无巨细,每个函数都不想错过。后果就导致对整体没有概念,抓不住重点,又深陷无关紧要的代码。最初就是看不进去,只能放弃。
最近看了一点 Go 源码,缓缓也摸索出了一些心得。有一个办法我感觉挺好,能够带着问题去读源码,比方:
- Go Error 嵌套到底是怎么实现的?
- 为什么要防止在 Go 中应用 ioutil.ReadAll?
- [如何在 Go 中将 []byte 转换为 io.Reader?](https://mp.weixin.qq.com/s/nF…)
在解决问题的过程中也就对源码更相熟了。
还有一点要留神的就是,先看整体,再看细节。
在这里举荐给大家一个工具,这个工具能够帮咱们梳理出代码的整体构造,我感觉还是挺有用的。是一个开源我的项目:
我的项目地址: https://github.com/jfeliu007/…
这个我的项目能够剖析一个 Go 我的项目,而后生成接口和构造体的 UML 图。有了这个图之后,基本上也就对我的项目整体关系有了一个基本概念,再读代码的话,相对来说会容易一些。
我的项目具体怎么用我倒是没认真钻研,因为老哥十分贴心的写了一个 WEB 页面:
网站链接: https://www.dumels.com/
应用起来很不便,首先在页面最上方输入框输出我的项目地址,而后在左侧输出要剖析的代码目录就能够了。默认生成的图中会包含 Fields 和 Methods。
填写好信息之后就能够生成 UML 图了。比方我输出的 src/sync
,就失去了上面这张图,有了这张图,对代码构造之间的关系就更清晰了。
还能够一次剖析多个目录,多个目录用英文逗号宰割。
如果不填写要剖析的目录,则会剖析整个我的项目,也能够抉择是否要疏忽某个目录。
情谊提醒一点,不要试图剖析整个 Go 我的项目,可能是我的项目太大了,页面是不会给你返回的。
好了,本文就到这里了。你有什么好用的工具吗?欢送给我留言交换。
往期举荐:
- Go 学习路线(2022)
- 开始读 Go 源码了
- 举荐三个实用的 Go 开发工具