Go 學習路線(2022)

yongxinz發表於2022-02-07

原文連結: Go 學習路線(2022)

Go 語言的發展越來越好了,很多大廠使用 Go 作為主要開發語言,也有很多人開始學習 Go,準備轉 Go 開發。

那麼,怎麼學呢?

我發現,在網際網路時代,學習的困難不是說沒有資料,而是資料太多,不知道應該看哪個,從哪開始看。

所以,我整理了一份 Go 學習路線,這份學習路線不以數量取勝,努力做到精簡。從基礎到進階,從理論到實戰,一共包括以下幾個內容:

  • 入門教程
  • 進階教程
  • 書籍推薦
  • Web 開發
  • 練手專案
  • 實用工具
  • 技術社群

Go 學習路線(2022)

這份學習路線還會不斷優化更新,感興趣的同學可以收藏這個連結:https://github.com/yongxinz/gopher,第一時間獲取最新資源,如果能給個 star 那就太謝謝了。

入門教程

Go 學習路線(2022)

Go 語言中文網 - Go 語言入門教程

網站連結: http://c.biancheng.net/golang/

Go 學習路線(2022)

這套 Go 語言教程通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程式設計師查閱知識點。

菜鳥教程 - Go 語言教程

網站連結: https://www.runoob.com/go/go-tutorial.html

Go 學習路線(2022)

這個網站就不需要多介紹了吧,很多程式語言的入門教程都可以在這裡找到。平時寫程式碼過程中,某個知識點忘了,也可以到這裡查。

W3Cshcool - Go 教程

網站連結: https://www.w3cschool.cn/go/

Go 學習路線(2022)

也是一個綜合性的程式設計入門教程網站,資料很多,也都很基礎。

Go by Example

網站連結: https://gobyexample.com/

Go 學習路線(2022)

很多程式碼示例,學習基礎知識的時候很實用。可以一邊看理論,一邊參考這個網站寫程式碼,效果會更好。

地鼠文件

網站連結: https://www.topgoer.cn/

Go 學習路線(2022)

可以說是 Go 程式設計的導航網站了,收藏了很多 Go 學習資料。包括網站,書籍,開源庫,開源專案等。

進階教程

Go 學習路線(2022)

mojotv 部落格

網站連結: https://mojotv.cn/

Go 學習路線(2022)

很不錯的部落格,裡面很多 Go 進階文章,還有其他方面的技術文章,值得一讀。我試圖找了一下作者資訊,但是沒找到。

煎魚 - Go 語言設計哲學

網站連結: https://golang3.eddycjy.com/

Go 學習路線(2022)

煎魚大佬的部落格,結合官方資料和作者自己的理解,梳理出的一系列 Go 語言設計相關的理念和哲學的文章。

面向信仰程式設計 - Go 語言設計與實現

網站連結: https://draveness.me/golang/

Go 學習路線(2022)

左神的部落格,內容很深,想要成為大神的話,絕對要來看。

Go 夜讀

網站連結: https://talkgo.org/

這是一個由眾多資深 Gopher 組織的開源專案,主要是對 Go 原始碼進行解讀。並且堅持開源,將相關資源都上傳到了 GitHub。

書籍推薦

書單一共包含 10 本書,分為入門 5 本,進階 5 本。我讀過其中 7 本,另外 3 本雖然沒讀過,但也是網上推薦比較多的。

雖然分了入門和進階,但是很多書中這兩部分內容是都包含了的。大家看的時候可以根據自己的情況,先打好基礎,再進行進階。

有的書是開源的,可以直接線上閱讀,有的有電子書,大家可以在這裡 GitHub 找到下載方式。如果條件允許的話,買正版是最好的。

Go 學習路線(2022)

入門

《Go語言趣學指南》

Go 學習路線(2022)

本書是一本面向 Go 語言初學者的書,內容也比較淺,非常適合入門。

書中循序漸進地介紹了使用 Go 語言必需知道的知識,展示了非常多生動有趣的例子,並通過提供大量練習來加深讀者對書中所述內容的理解。

《Go 入門指南》

這本書的英文名稱叫《The Way to Go》,作者利用業餘時間來進行翻譯工作。在取得原作者 Ivo Balbaert 授權的情況下,將其開源。

線上閱讀: https://github.com/Unknwon/the-way-to-go_ZH_CN

《Go 語言程式設計》

Go 學習路線(2022)

本書以介紹 Go 語言特性為主,示例則儘量採用作者平常的實踐,而不是一個沒有太大實際意義的語法示範樣例。通過與 C++ 和 Java 做一個橫向比較,可以更直觀看出其設計理念的差別。

作者許式偉為原金山 WPS 首席架構師、曾是盛大創新院研究員,目前是國內 Go 語言實踐圈子公認的 Go 語言專家。參與本書寫作的幾位作者都是實際用 Go 語言開發的專案的開發人員,有較強的實戰經驗。

《Go 語言 101》

是一本著墨於 Go 語法語義以及執行時相關知識點的程式設計指導書(Go 1.17 就緒)。 此書旨在儘可能地幫助 Go 程式設計師更深更全面地理解 Go 語言。

此書也蒐集了 Go 語言和 Go 程式設計中的很多細節,其中有一些在官方文件中從未提及。

此書同時適合 Go 初學者和有一定經驗的 Go 程式設計師閱讀。

線上閱讀: https://gfw.go101.org/article/101.html

《Go 語言程式設計》

Go 學習路線(2022)

本書由作者 Kernighan 和谷歌公司 Go 團隊主管 Alan Donovan 聯袂撰寫,是學習 Go 語言的指南級書籍。內容翔實全面,涵蓋了全部基礎內容,值得一讀。

進階

《Go 語言實戰》

Go 學習路線(2022)

相比於其他技術書籍,這本書很薄。顯然,這不是面面俱到,涵蓋所有知識點的一本書,但它直擊要點。

我在閱讀過程中,最大的感受就是,很多看基礎知識過程中碰到的,又很難通過搜尋引擎找到答案的問題,在這裡獲得瞭解答。

《Go Web 程式設計》

Go 學習路線(2022)

學語言不是目的,能夠使用這門語言來幹活並掙到錢,才是目的。因此,不得不學一下 Go 在 Web 程式設計方面的應用。

這本書是由黃健巨集翻譯的,這位譯者,還著有《Redis 設計與實現》一書,書中深入淺出地分析了 Redis 所用的資料結構和設計思想,屬實優秀。

《Go 語言高階程式設計》

Go 學習路線(2022)

涵蓋 CGO、Go 彙編、RPC 實現、Web 框架、分散式系統等高階主題。書中章節之間沒有很強的關聯性,每個章節都是獨立的知識,完全可以按需閱讀。

線上閱讀: https://github.com/chai2010/advanced-go-programming-book

《Go 語言學習筆記》

Go 學習路線(2022)

作者是雨痕大佬,2015 年第一屆 GopherChina 大會講師。

本書分上下兩卷:

上卷細緻解析了語言規範相關細節,便於讀者深入理解語言相關功能的使用方法和注意事項。

下卷則對執行時原始碼做出深度剖析,引導讀者透徹瞭解語言功能背後的支援環境和執行體系,諸如記憶體分配、垃圾回收和併發排程等。本書不適合程式設計初學入門,可供有實際程式設計經驗或正在使用 Go 工作的人群參考。

《Go 語言底層原理剖析》

Go 學習路線(2022)

本書使用淺顯易懂的語言與大量圖片深入介紹了 Go 語言編譯時、型別系統、語法特性、函式呼叫規範、併發程式設計、記憶體管理與垃圾回收、執行狀態監控等模組的使用方法和底層原理。

對於想要了解 Go 底層原理,閱讀原始碼的同學來說,可以閱讀此書,但想要完全理解書中的內容,並不是一件容易的事。

Web 開發

Go 是一種開源程式語言,可以輕鬆構建簡單、可靠和高效的軟體。也正因為它簡單、可靠、高效的特性,在使用 Go 語言開發 Web 應用時有以下的優勢:

  1. 更簡單
  2. 更強的編譯能力
  3. 更高的效能
  4. 良好的 IDE 支援和除錯功能
  5. 語法簡單易上手

下面介紹 5 個開源 Web 框架,選擇它們的標準是:在 GitHub 上 star 多,維護積極,被使用的多並且查詢資料方便。

Go 學習路線(2022)

Gin

專案地址: https://github.com/gin-gonic/gin

一個完全由 Go 語言編寫而成的 HTTP Web 框架,提供了一個速度更快的、效能更高的 Go 語言 Web 開發框架。

這個框架對於初學者來說很容易上手,而且在 Web 框架中,star 是最多的,使用的人也非常多。

Beego

專案地址: https://github.com/beego/beego

Beego 是一款由 Go 語言開發專家 Asta謝 開發的一款簡單易用的企業級 Go 應用開發框架,具備全中文的官方網站和教程。

不同於其他框架語言,Beego 不僅僅提供圖文教程,還提供了視訊教程,這一點對國內的開發人員來講是非常友好的。

Iris

專案地址: https://github.com/kataras/iris

Iris 框架在其官方網站上被描述為 Go 開發中最快的 Web 框架,並給出了多框架和多語言之間的效能對比。

如果你正在選擇一款效能不錯、輕量級且簡單易上手的 Go 語言 Web 開發框架,Iris 是一個不錯的選擇。

Echo

專案地址: https://github.com/labstack/echo

Echo 是個快速的 HTTP 路由器(零動態記憶體分配),也是 Go 的微型 Web 框架。

其具備快速 HTTP 路由器、支援擴充套件中介軟體,同時還支援靜態檔案服務、WebSocket 以及支援制定繫結函式、制定相應渲染函式,並允許使用任意的 HTML 模版引擎。

GoFrame

專案地址: https://github.com/gogf/gf

GoFrame 是一款模組化、高效能、企業級的 Go 基礎開發框架。GoFrame 不是一款 WEB/RPC 框架,而是一款通用性的基礎開發框架,是 Golang 標準庫的一個增強擴充套件級,包含通用核心的基礎開發元件。

優點是實戰化、模組化、文件全面、模組豐富、易用性高、通用性強、面向團隊。

總體來說,這個專案具有完善的中文文件和周邊開發庫,活躍的 issue 討論區,專案模組化設計很好。

這 5 個開源專案各有優劣,有的已經被市場驗證,使用廣泛;有的作為後起之秀,發展迅速。

大家可以挑選自己感興趣的來學習和使用。

練手專案

學完了理論,接下來就是實戰,開始做專案。除了 Web 開發之外,還有很多方向可以選擇,比如 db,cache,im 等等。而且作為練手專案,不能太複雜,否則根本看不懂,反而打擊信心,起不到鍛鍊的效果。

這裡我選擇了 5 個專案,整體上來說,程式碼量不是很大,難度也適中。而且不同專案可以學習到不同的技術點,大家可以選擇自己感興趣的來嘗試。

Go 學習路線(2022)

id-maker

專案地址: https://github.com/yongxinz/id-maker

Go 開發的一款分散式唯一 ID 生成系統。

程式碼量少,專案整體難度小,通過這個專案可以學習到 httpServer,gRPC 相關知識。

cache2go

專案地址: https://github.com/muesli/cache2go

比較簡單的一個快取庫,程式碼量很少,適合新手學習。通過這個專案可以學習到鎖、goroutine 等知識。

rosedb

專案地址: https://github.com/flower-corp/rosedb

rosedb 是一個穩定、高效能、快速、內嵌的 k-v 儲存引擎,支援多種資料結構,包含 String、List、Hash、Set、Sorted Set,介面名稱風格和 Redis 類似。

專案使用純 Golang 實現,Go 語言的絕大部分基礎知識點都包含了,相信一定是學習和鞏固 Golang 的很不錯的專案。

除此之外,程式碼中還有一些資料結構的實現,所以同時也能學習一下資料結構的知識。

wechat-go

專案地址: https://github.com/songtianyi/wechat-go

這是微信 Web 版 API 的 Go 語言實現,模擬微信網頁版的登入/聯絡人/訊息收發等功能,可以完全接管微信收到的訊息,並定製自己的傳送內容。

我覺得這個專案還是挺有趣的,用來操作一下微信,能夠體會到更多學習的樂趣。

gin-vue-admin

專案地址: https://github.com/flipped-aurora/gin-vue-admin

gin-vue-admin 是一個使用 gin + vue 進行極速開發的全棧後臺管理系統,後臺使用 gin 框架,前端主要使用 vue。

專案的目錄結構非常清晰,包名語義化,能夠幫助你快速上手學習。

這個專案還使用到了一些流行的 Go 開源庫及中介軟體,例如:

  • gin:最流行的 Go 語言 Web 框架
  • gorm:資料庫操作中介軟體
  • zap:uber 開源的 Go 語言日誌庫
  • redis:k-v 快取

除此之外,這個專案還有詳細的中文文件,並且配套教學視訊,值得學習。

實用工具

隨著編輯器的逐漸強大,有一些小而美的網站的功能已經被編輯器取代了,但依舊不妨礙我喜歡它們,下面都推薦給大家。

Go 學習路線(2022)

JSON to Go struct

網站連結: https://mholt.github.io/json-to-go/

YAML to Go struct

網站連結: https://zhwt.github.io/yaml-to-go/

Table to Go struct

網站連結: https://github.com/gohouse/converter

使用方式分兩種,分別是命令列呼叫和寫 Go 程式碼。兩種方式都不復雜,具體見這篇文章:推薦三個實用的 Go 開發工具

Rego

網站連結: http://regoio.herokuapp.com/

Go 學習路線(2022)

Go 語言正則線上測試。

plantUML

網站連結: https://www.dumels.com/

Go 學習路線(2022)

這個網站可以分析一個 Go 專案,然後生成介面和結構體的 UML 圖。有了這個圖之後,基本上也就對專案整體關係有了一個基本概念,再讀原始碼的話,相對來說會容易一些。

具體見這篇文章:讀 Go 原始碼,可以試試這個工具

Playground

網站連結: https://go.dev/play/

Go 學習路線(2022)

Go 語言程式碼線上執行。

技術社群

現在的話,技術社群可能看的人越來越少了,也不那麼活躍。從我個人的經驗來說,也是這樣,有什麼問題直接谷歌了,基本不會先到技術社群去查去問。

Go 學習路線(2022)

在這裡推薦幾個我覺得還不錯的,閒暇時間可以逛逛看。

除此之外,還有兩個網站很重要,就是 GitHub 和 stackoverflow。保守估計,這兩個網站撐起了程式設計師一半的工資。

以上就是本文的全部內容,希望各位大佬學的開心。

文中涉及到的全部資源,包括電子書,腦圖等都會開源到 GitHub。並且,這個學習路線還會不停維護和更新,大家也可以關注我的 GitHub,這樣就可以第一時間獲取最新資源。

如果覺得本文還可以的話,歡迎點贊分享,感謝支援。


開源地址:

相關文章