新聞中心
學(xué)習(xí)基礎(chǔ)語(yǔ)法,看看框架文檔,幾天時(shí)間搞出一個(gè)小項(xiàng)目并不是一件很難的事情。

成都創(chuàng)新互聯(lián)公司專(zhuān)注于蘭坪企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。蘭坪網(wǎng)站建設(shè)公司,為蘭坪等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
但時(shí)間長(zhǎng)了就會(huì)發(fā)現(xiàn),一直這樣飄在表面是不行的,技術(shù)永遠(yuǎn)得不到提升。
想要技術(shù)水平有一個(gè)質(zhì)的飛躍,有一個(gè)很好的方法,就是讀源碼。
但讀源碼真的是一件很有挑戰(zhàn)的事情。
想想當(dāng)年自己讀 Django 源碼,從啟動(dòng)流程開(kāi)始看,沒(méi)走幾步就放棄了,而且還放棄了很多次。
這么說(shuō)吧,我對(duì) Django 啟動(dòng)部分的代碼,就像對(duì)英文單詞 abandon 那么熟悉。
后來(lái)總結(jié)經(jīng)驗(yàn),發(fā)現(xiàn)是方法不對(duì)。
主要原因是一上來(lái)就深入細(xì)節(jié)了,事無(wú)巨細(xì),每個(gè)函數(shù)都不想錯(cuò)過(guò)。結(jié)果就導(dǎo)致對(duì)整體沒(méi)有概念,抓不住重點(diǎn),又深陷無(wú)關(guān)緊要的代碼。最后就是看不進(jìn)去,只能放棄。
最近看了一點(diǎn) Go 源碼,慢慢也摸索出了一些心得。有一個(gè)方法我覺(jué)得挺好,可以帶著問(wèn)題去讀源碼,比如:
- Go Error 嵌套到底是怎么實(shí)現(xiàn)的?
- 為什么要避免在 Go 中使用 ioutil.ReadAll?
- 如何在 Go 中將 []byte 轉(zhuǎn)換為 io.Reader?
在解決問(wèn)題的過(guò)程中也就對(duì)源碼更熟悉了。
還有一點(diǎn)要注意的就是,先看整體,再看細(xì)節(jié)。
在這里推薦給大家一個(gè)工具,這個(gè)工具可以幫我們梳理出代碼的整體結(jié)構(gòu),我覺(jué)得還是挺有用的。是一個(gè)開(kāi)源項(xiàng)目:
項(xiàng)目地址: https://github.com/jfeliu007/goplantuml
這個(gè)項(xiàng)目可以分析一個(gè) Go 項(xiàng)目,然后生成接口和結(jié)構(gòu)體的 UML 圖。有了這個(gè)圖之后,基本上也就對(duì)項(xiàng)目整體關(guān)系有了一個(gè)基本概念,再讀代碼的話,相對(duì)來(lái)說(shuō)會(huì)容易一些。
項(xiàng)目具體怎么用我倒是沒(méi)仔細(xì)研究,因?yàn)槔细绶浅YN心的寫(xiě)了一個(gè) WEB 頁(yè)面:
網(wǎng)站鏈接: https://www.dumels.com/
使用起來(lái)很方便,首先在頁(yè)面最上方輸入框輸入項(xiàng)目地址,然后在左側(cè)輸入要分析的代碼目錄就可以了。默認(rèn)生成的圖中會(huì)包括 Fields 和 Methods。
填寫(xiě)好信息之后就可以生成 UML 圖了。比如我輸入的 src/sync,就得到了下面這張圖,有了這張圖,對(duì)代碼結(jié)構(gòu)之間的關(guān)系就更清晰了。
還可以一次分析多個(gè)目錄,多個(gè)目錄用英文逗號(hào)分割。
如果不填寫(xiě)要分析的目錄,則會(huì)分析整個(gè)項(xiàng)目,也可以選擇是否要忽略某個(gè)目錄。
友情提示一點(diǎn),不要試圖分析整個(gè) Go 項(xiàng)目,可能是項(xiàng)目太大了,頁(yè)面是不會(huì)給你返回的。
分享標(biāo)題:讀Go源碼,可以試試這個(gè)工具
網(wǎng)頁(yè)鏈接:http://www.dlmjj.cn/article/djscpds.html


咨詢
建站咨詢
