原文鏈接: Go 學(xué)習(xí)路線(2022)
Go 語(yǔ)言的發(fā)展越來(lái)越好了,很多大廠使用 Go 作為主要開發(fā)語(yǔ)言,也有很多人開始學(xué)習(xí) Go,準(zhǔn)備轉(zhuǎn) Go 開發(fā)。
那么,怎么學(xué)呢?
我發(fā)現(xiàn),在互聯(lián)網(wǎng)時(shí)代,學(xué)習(xí)的困難不是說(shuō)沒有資料,而是資料太多,不知道應(yīng)該看哪個(gè),從哪開始看。
所以,我整理了一份 Go 學(xué)習(xí)路線,這份學(xué)習(xí)路線不以數(shù)量取勝,努力做到精簡(jiǎn)。從基礎(chǔ)到進(jìn)階,從理論到實(shí)戰(zhàn),一共包括以下幾個(gè)內(nèi)容:
- 入門教程
- 進(jìn)階教程
- 書籍推薦
- Web 開發(fā)
- 練手項(xiàng)目
- 實(shí)用工具
- 技術(shù)社區(qū)

這份學(xué)習(xí)路線還會(huì)不斷優(yōu)化更新,感興趣的同學(xué)可以收藏這個(gè)鏈接:https://github.com/yongxinz/gopher,第一時(shí)間獲取最新資源,如果能給個(gè) star 那就太謝謝了。
入門教程

Go 語(yǔ)言中文網(wǎng) - Go 語(yǔ)言入門教程
網(wǎng)站鏈接: http://c.biancheng.net/golang/

這套 Go 語(yǔ)言教程通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識(shí)點(diǎn)。
菜鳥教程 - Go 語(yǔ)言教程
網(wǎng)站鏈接: https://www.runoob.com/go/go-tutorial.html

這個(gè)網(wǎng)站就不需要多介紹了吧,很多編程語(yǔ)言的入門教程都可以在這里找到。平時(shí)寫代碼過程中,某個(gè)知識(shí)點(diǎn)忘了,也可以到這里查。
W3Cshcool - Go 教程
網(wǎng)站鏈接: https://www.w3cschool.cn/go/

也是一個(gè)綜合性的編程入門教程網(wǎng)站,資料很多,也都很基礎(chǔ)。
Go by Example
網(wǎng)站鏈接: https://gobyexample.com/

很多代碼示例,學(xué)習(xí)基礎(chǔ)知識(shí)的時(shí)候很實(shí)用??梢砸贿吙蠢碚?,一邊參考這個(gè)網(wǎng)站寫代碼,效果會(huì)更好。
地鼠文檔
網(wǎng)站鏈接: https://www.topgoer.cn/

可以說(shuō)是 Go 編程的導(dǎo)航網(wǎng)站了,收藏了很多 Go 學(xué)習(xí)資料。包括網(wǎng)站,書籍,開源庫(kù),開源項(xiàng)目等。
進(jìn)階教程

mojotv 博客
網(wǎng)站鏈接: https://mojotv.cn/

很不錯(cuò)的博客,里面很多 Go 進(jìn)階文章,還有其他方面的技術(shù)文章,值得一讀。我試圖找了一下作者信息,但是沒找到。
煎魚 - Go 語(yǔ)言設(shè)計(jì)哲學(xué)
網(wǎng)站鏈接: https://golang3.eddycjy.com/

煎魚大佬的博客,結(jié)合官方資料和作者自己的理解,梳理出的一系列 Go 語(yǔ)言設(shè)計(jì)相關(guān)的理念和哲學(xué)的文章。
面向信仰編程 - Go 語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)
網(wǎng)站鏈接: https://draveness.me/golang/

左神的博客,內(nèi)容很深,想要成為大神的話,絕對(duì)要來(lái)看。
Go 夜讀
網(wǎng)站鏈接: https://talkgo.org/
這是一個(gè)由眾多資深 Gopher 組織的開源項(xiàng)目,主要是對(duì) Go 源碼進(jìn)行解讀。并且堅(jiān)持開源,將相關(guān)資源都上傳到了 GitHub。
書籍推薦
書單一共包含 10 本書,分為入門 5 本,進(jìn)階 5 本。我讀過其中 7 本,另外 3 本雖然沒讀過,但也是網(wǎng)上推薦比較多的。
雖然分了入門和進(jìn)階,但是很多書中這兩部分內(nèi)容是都包含了的。大家看的時(shí)候可以根據(jù)自己的情況,先打好基礎(chǔ),再進(jìn)行進(jìn)階。
有的書是開源的,可以直接在線閱讀,有的有電子書,大家可以在這里 GitHub 找到下載方式。如果條件允許的話,買正版是最好的。

入門
《Go語(yǔ)言趣學(xué)指南》

本書是一本面向 Go 語(yǔ)言初學(xué)者的書,內(nèi)容也比較淺,非常適合入門。
書中循序漸進(jìn)地介紹了使用 Go 語(yǔ)言必需知道的知識(shí),展示了非常多生動(dòng)有趣的例子,并通過提供大量練習(xí)來(lái)加深讀者對(duì)書中所述內(nèi)容的理解。
《Go 入門指南》
這本書的英文名稱叫《The Way to Go》,作者利用業(yè)余時(shí)間來(lái)進(jìn)行翻譯工作。在取得原作者 Ivo Balbaert 授權(quán)的情況下,將其開源。
在線閱讀: https://github.com/Unknwon/the-way-to-go_ZH_CN
《Go 語(yǔ)言編程》

本書以介紹 Go 語(yǔ)言特性為主,示例則盡量采用作者平常的實(shí)踐,而不是一個(gè)沒有太大實(shí)際意義的語(yǔ)法示范樣例。通過與 C++ 和 Java 做一個(gè)橫向比較,可以更直觀看出其設(shè)計(jì)理念的差別。
作者許式偉為原金山 WPS 首席架構(gòu)師、曾是盛大創(chuàng)新院研究員,目前是國(guó)內(nèi) Go 語(yǔ)言實(shí)踐圈子公認(rèn)的 Go 語(yǔ)言專家。參與本書寫作的幾位作者都是實(shí)際用 Go 語(yǔ)言開發(fā)的項(xiàng)目的開發(fā)人員,有較強(qiáng)的實(shí)戰(zhàn)經(jīng)驗(yàn)。
《Go 語(yǔ)言 101》
是一本著墨于 Go 語(yǔ)法語(yǔ)義以及運(yùn)行時(shí)相關(guān)知識(shí)點(diǎn)的編程指導(dǎo)書(Go 1.17 就緒)。 此書旨在盡可能地幫助 Go 程序員更深更全面地理解 Go 語(yǔ)言。
此書也搜集了 Go 語(yǔ)言和 Go 編程中的很多細(xì)節(jié),其中有一些在官方文檔中從未提及。
此書同時(shí)適合 Go 初學(xué)者和有一定經(jīng)驗(yàn)的 Go 程序員閱讀。
在線閱讀: https://gfw.go101.org/article/101.html
《Go 語(yǔ)言程序設(shè)計(jì)》

本書由作者 Kernighan 和谷歌公司 Go 團(tuán)隊(duì)主管 Alan Donovan 聯(lián)袂撰寫,是學(xué)習(xí) Go 語(yǔ)言的指南級(jí)書籍。內(nèi)容翔實(shí)全面,涵蓋了全部基礎(chǔ)內(nèi)容,值得一讀。
進(jìn)階
《Go 語(yǔ)言實(shí)戰(zhàn)》

相比于其他技術(shù)書籍,這本書很薄。顯然,這不是面面俱到,涵蓋所有知識(shí)點(diǎn)的一本書,但它直擊要點(diǎn)。
我在閱讀過程中,最大的感受就是,很多看基礎(chǔ)知識(shí)過程中碰到的,又很難通過搜索引擎找到答案的問題,在這里獲得了解答。
《Go Web 編程》

學(xué)語(yǔ)言不是目的,能夠使用這門語(yǔ)言來(lái)干活并掙到錢,才是目的。因此,不得不學(xué)一下 Go 在 Web 編程方面的應(yīng)用。
這本書是由黃健宏翻譯的,這位譯者,還著有《Redis 設(shè)計(jì)與實(shí)現(xiàn)》一書,書中深入淺出地分析了 Redis 所用的數(shù)據(jù)結(jié)構(gòu)和設(shè)計(jì)思想,屬實(shí)優(yōu)秀。
《Go 語(yǔ)言高級(jí)編程》

涵蓋 CGO、Go 匯編、RPC 實(shí)現(xiàn)、Web 框架、分布式系統(tǒng)等高階主題。書中章節(jié)之間沒有很強(qiáng)的關(guān)聯(lián)性,每個(gè)章節(jié)都是獨(dú)立的知識(shí),完全可以按需閱讀。
在線閱讀: https://github.com/chai2010/advanced-go-programming-book
《Go 語(yǔ)言學(xué)習(xí)筆記》

作者是雨痕大佬,2015 年第一屆 GopherChina 大會(huì)講師。
本書分上下兩卷:
上卷細(xì)致解析了語(yǔ)言規(guī)范相關(guān)細(xì)節(jié),便于讀者深入理解語(yǔ)言相關(guān)功能的使用方法和注意事項(xiàng)。
下卷則對(duì)運(yùn)行時(shí)源碼做出深度剖析,引導(dǎo)讀者透徹了解語(yǔ)言功能背后的支持環(huán)境和運(yùn)行體系,諸如內(nèi)存分配、垃圾回收和并發(fā)調(diào)度等。本書不適合編程初學(xué)入門,可供有實(shí)際編程經(jīng)驗(yàn)或正在使用 Go 工作的人群參考。
《Go 語(yǔ)言底層原理剖析》

本書使用淺顯易懂的語(yǔ)言與大量圖片深入介紹了 Go 語(yǔ)言編譯時(shí)、類型系統(tǒng)、語(yǔ)法特性、函數(shù)調(diào)用規(guī)范、并發(fā)編程、內(nèi)存管理與垃圾回收、運(yùn)行狀態(tài)監(jiān)控等模塊的使用方法和底層原理。
對(duì)于想要了解 Go 底層原理,閱讀源碼的同學(xué)來(lái)說(shuō),可以閱讀此書,但想要完全理解書中的內(nèi)容,并不是一件容易的事。
Web 開發(fā)
Go 是一種開源編程語(yǔ)言,可以輕松構(gòu)建簡(jiǎn)單、可靠和高效的軟件。也正因?yàn)樗?jiǎn)單、可靠、高效的特性,在使用 Go 語(yǔ)言開發(fā) Web 應(yīng)用時(shí)有以下的優(yōu)勢(shì):
- 更簡(jiǎn)單
- 更強(qiáng)的編譯能力
- 更高的性能
- 良好的 IDE 支持和調(diào)試功能
- 語(yǔ)法簡(jiǎn)單易上手
下面介紹 5 個(gè)開源 Web 框架,選擇它們的標(biāo)準(zhǔn)是:在 GitHub 上 star 多,維護(hù)積極,被使用的多并且查找資料方便。

Gin
項(xiàng)目地址: https://github.com/gin-gonic/gin
一個(gè)完全由 Go 語(yǔ)言編寫而成的 HTTP Web 框架,提供了一個(gè)速度更快的、性能更高的 Go 語(yǔ)言 Web 開發(fā)框架。
這個(gè)框架對(duì)于初學(xué)者來(lái)說(shuō)很容易上手,而且在 Web 框架中,star 是最多的,使用的人也非常多。
Beego
項(xiàng)目地址: https://github.com/beego/beego
Beego 是一款由 Go 語(yǔ)言開發(fā)專家 Asta謝 開發(fā)的一款簡(jiǎn)單易用的企業(yè)級(jí) Go 應(yīng)用開發(fā)框架,具備全中文的官方網(wǎng)站和教程。
不同于其他框架語(yǔ)言,Beego 不僅僅提供圖文教程,還提供了視頻教程,這一點(diǎn)對(duì)國(guó)內(nèi)的開發(fā)人員來(lái)講是非常友好的。
Iris
項(xiàng)目地址: https://github.com/kataras/iris
Iris 框架在其官方網(wǎng)站上被描述為 Go 開發(fā)中最快的 Web 框架,并給出了多框架和多語(yǔ)言之間的性能對(duì)比。
如果你正在選擇一款性能不錯(cuò)、輕量級(jí)且簡(jiǎn)單易上手的 Go 語(yǔ)言 Web 開發(fā)框架,Iris 是一個(gè)不錯(cuò)的選擇。
Echo
項(xiàng)目地址: https://github.com/labstack/echo
Echo 是個(gè)快速的 HTTP 路由器(零動(dòng)態(tài)內(nèi)存分配),也是 Go 的微型 Web 框架。
其具備快速 HTTP 路由器、支持?jǐn)U展中間件,同時(shí)還支持靜態(tài)文件服務(wù)、WebSocket 以及支持制定綁定函數(shù)、制定相應(yīng)渲染函數(shù),并允許使用任意的 HTML 模版引擎。
GoFrame
項(xiàng)目地址: https://github.com/gogf/gf
GoFrame 是一款模塊化、高性能、企業(yè)級(jí)的 Go 基礎(chǔ)開發(fā)框架。GoFrame 不是一款 WEB/RPC 框架,而是一款通用性的基礎(chǔ)開發(fā)框架,是 Golang 標(biāo)準(zhǔn)庫(kù)的一個(gè)增強(qiáng)擴(kuò)展級(jí),包含通用核心的基礎(chǔ)開發(fā)組件。
優(yōu)點(diǎn)是實(shí)戰(zhàn)化、模塊化、文檔全面、模塊豐富、易用性高、通用性強(qiáng)、面向團(tuán)隊(duì)。
總體來(lái)說(shuō),這個(gè)項(xiàng)目具有完善的中文文檔和周邊開發(fā)庫(kù),活躍的 issue 討論區(qū),項(xiàng)目模塊化設(shè)計(jì)很好。
這 5 個(gè)開源項(xiàng)目各有優(yōu)劣,有的已經(jīng)被市場(chǎng)驗(yàn)證,使用廣泛;有的作為后起之秀,發(fā)展迅速。
大家可以挑選自己感興趣的來(lái)學(xué)習(xí)和使用。
練手項(xiàng)目
學(xué)完了理論,接下來(lái)就是實(shí)戰(zhàn),開始做項(xiàng)目。除了 Web 開發(fā)之外,還有很多方向可以選擇,比如 db,cache,im 等等。而且作為練手項(xiàng)目,不能太復(fù)雜,否則根本看不懂,反而打擊信心,起不到鍛煉的效果。
這里我選擇了 5 個(gè)項(xiàng)目,整體上來(lái)說(shuō),代碼量不是很大,難度也適中。而且不同項(xiàng)目可以學(xué)習(xí)到不同的技術(shù)點(diǎn),大家可以選擇自己感興趣的來(lái)嘗試。

id-maker
項(xiàng)目地址: https://github.com/yongxinz/id-maker
Go 開發(fā)的一款分布式唯一 ID 生成系統(tǒng)。
代碼量少,項(xiàng)目整體難度小,通過這個(gè)項(xiàng)目可以學(xué)習(xí)到 httpServer,gRPC 相關(guān)知識(shí)。
cache2go
項(xiàng)目地址: https://github.com/muesli/cache2go
比較簡(jiǎn)單的一個(gè)緩存庫(kù),代碼量很少,適合新手學(xué)習(xí)。通過這個(gè)項(xiàng)目可以學(xué)習(xí)到鎖、goroutine 等知識(shí)。
rosedb
項(xiàng)目地址: https://github.com/flower-corp/rosedb
rosedb 是一個(gè)穩(wěn)定、高性能、快速、內(nèi)嵌的 k-v 存儲(chǔ)引擎,支持多種數(shù)據(jù)結(jié)構(gòu),包含 String、List、Hash、Set、Sorted Set,接口名稱風(fēng)格和 Redis 類似。
項(xiàng)目使用純 Golang 實(shí)現(xiàn),Go 語(yǔ)言的絕大部分基礎(chǔ)知識(shí)點(diǎn)都包含了,相信一定是學(xué)習(xí)和鞏固 Golang 的很不錯(cuò)的項(xiàng)目。
除此之外,代碼中還有一些數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),所以同時(shí)也能學(xué)習(xí)一下數(shù)據(jù)結(jié)構(gòu)的知識(shí)。
wechat-go
項(xiàng)目地址: https://github.com/songtianyi/wechat-go
這是微信 Web 版 API 的 Go 語(yǔ)言實(shí)現(xiàn),模擬微信網(wǎng)頁(yè)版的登錄/聯(lián)系人/消息收發(fā)等功能,可以完全接管微信收到的消息,并定制自己的發(fā)送內(nèi)容。
我覺得這個(gè)項(xiàng)目還是挺有趣的,用來(lái)操作一下微信,能夠體會(huì)到更多學(xué)習(xí)的樂趣。
gin-vue-admin
項(xiàng)目地址: https://github.com/flipped-aurora/gin-vue-admin
gin-vue-admin 是一個(gè)使用 gin + vue 進(jìn)行極速開發(fā)的全棧后臺(tái)管理系統(tǒng),后臺(tái)使用 gin 框架,前端主要使用 vue。
項(xiàng)目的目錄結(jié)構(gòu)非常清晰,包名語(yǔ)義化,能夠幫助你快速上手學(xué)習(xí)。
這個(gè)項(xiàng)目還使用到了一些流行的 Go 開源庫(kù)及中間件,例如:
- gin:最流行的 Go 語(yǔ)言 Web 框架
- gorm:數(shù)據(jù)庫(kù)操作中間件
- zap:uber 開源的 Go 語(yǔ)言日志庫(kù)
- redis:k-v 緩存
除此之外,這個(gè)項(xiàng)目還有詳細(xì)的中文文檔,并且配套教學(xué)視頻,值得學(xué)習(xí)。
實(shí)用工具
隨著編輯器的逐漸強(qiáng)大,有一些小而美的網(wǎng)站的功能已經(jīng)被編輯器取代了,但依舊不妨礙我喜歡它們,下面都推薦給大家。

JSON to Go struct
網(wǎng)站鏈接: https://mholt.github.io/json-to-go/
YAML to Go struct
網(wǎng)站鏈接: https://zhwt.github.io/yaml-to-go/
Table to Go struct
網(wǎng)站鏈接: https://github.com/gohouse/converter
使用方式分兩種,分別是命令行調(diào)用和寫 Go 代碼。兩種方式都不復(fù)雜,具體見這篇文章:推薦三個(gè)實(shí)用的 Go 開發(fā)工具
Rego
網(wǎng)站鏈接: http://regoio.herokuapp.com/

Go 語(yǔ)言正則在線測(cè)試。
plantUML
網(wǎng)站鏈接: https://www.dumels.com/

這個(gè)網(wǎng)站可以分析一個(gè) Go 項(xiàng)目,然后生成接口和結(jié)構(gòu)體的 UML 圖。有了這個(gè)圖之后,基本上也就對(duì)項(xiàng)目整體關(guān)系有了一個(gè)基本概念,再讀源碼的話,相對(duì)來(lái)說(shuō)會(huì)容易一些。
具體見這篇文章:讀 Go 源碼,可以試試這個(gè)工具
Playground
網(wǎng)站鏈接: https://go.dev/play/

Go 語(yǔ)言代碼在線運(yùn)行。
技術(shù)社區(qū)
現(xiàn)在的話,技術(shù)社區(qū)可能看的人越來(lái)越少了,也不那么活躍。從我個(gè)人的經(jīng)驗(yàn)來(lái)說(shuō),也是這樣,有什么問題直接谷歌了,基本不會(huì)先到技術(shù)社區(qū)去查去問。

在這里推薦幾個(gè)我覺得還不錯(cuò)的,閑暇時(shí)間可以逛逛看。
除此之外,還有兩個(gè)網(wǎng)站很重要,就是 GitHub 和 stackoverflow。保守估計(jì),這兩個(gè)網(wǎng)站撐起了程序員一半的工資。
以上就是本文的全部?jī)?nèi)容,希望各位大佬學(xué)的開心。
文中涉及到的全部資源,包括電子書,腦圖等都會(huì)開源到 GitHub。并且,這個(gè)學(xué)習(xí)路線還會(huì)不停維護(hù)和更新,大家也可以關(guān)注我的 GitHub,這樣就可以第一時(shí)間獲取最新資源。
如果覺得本文還可以的話,歡迎點(diǎn)贊,分享,感謝支持。
開源地址: