原文链接: 读 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。

src/sync

还能够一次剖析多个目录,多个目录用英文逗号宰割。

如果不填写要剖析的目录,则会剖析整个我的项目,也能够抉择是否要疏忽某个目录。

情谊提醒一点,不要试图剖析整个 Go 我的项目,可能是我的项目太大了,页面是不会给你返回的。

好了,本文就到这里了。你有什么好用的工具吗?欢送给我留言交换。

往期举荐:

  • Go 学习路线(2022)
  • 开始读 Go 源码了
  • 举荐三个实用的 Go 开发工具