Go 語言學習路線來啦

roseduan發表於2021-07-05

時不時的有人問我一些關於 Go 語言學習路線、學習資源方面的問題,這篇文章就來詳細說一說。藉此希望給那些正在學習,或是想學習 Go 語言的朋友一些幫助。

需要說明的是,按照我推薦的來學習,完全掌握 Go 相關開發知識,並且找到 Go 開發的工作應該是問題不大的,當然具體能達到什麼樣的程度,得看個人了。

說明一下,文中提到的所有書籍,都可以在公眾號【roseduan寫字的地方】後臺回覆相應的關鍵字獲取:【演算法、作業系統、網路、資料庫、Go、微服務】,按需自取。

1. 基礎知識

無論你學習什麼程式語言,這些基礎知識是通用的,並且它們很重要,所以我覺得還是拿出來說一說,只不過現在網上這方面的知識已經很多了,知乎、公眾號搜一下,就能夠找到很多相關的內容,所以我這裡就簡單說下。

1.1 資料結構和演算法

推薦入門書籍《大話資料結構》、《啊哈!演算法》、《漫畫演算法·小灰的演算法之旅》、《演算法圖解》,進階的話可以看看《演算法導論》、《演算法》。

在這裡插入圖片描述

如果覺得書籍比較枯燥,網上也有一些付費專欄,可以訂閱來看看。注意一點,如果不是搞演算法方向的話,掌握最基礎常用的內容就可以了,沒必要去死磕太多高階的資料結構和演算法。

鞏固演算法知識的話,可以上 Leetcode 刷幾個題。當然,這塊內容還有一個作用,那就是應付面試,大家都懂的。我的 Github 上面有一個專案,可以幫助學習學習和鞏固演算法,地址:

github.com/roseduan/algo-learn

專案使用 Go、Java、Python 實現了常用的資料結構和演算法,以及相關 Leetcode 題目。

1.2 作業系統

這塊的內容,簡單看下就好,瞭解下基礎的概念,在工作的前幾年裡,你可能不太會用得上太多作業系統上面的知識,但相信我,這是職業生涯進階必過的坎,遲早會遇上的。

學習資源推薦:書籍《作業系統概念》、《深入理解計算機系統》、《現代作業系統》。
在這裡插入圖片描述
書籍看不下去的,很能理解你(因為我也看不下去),這裡推薦一個學堂線上的作業系統課程:

www.xuetangx.com/course/THU0809100...

是清華大學的公開課程,概念比較基礎容易理解,想要進階深入的話,人家也有配套的作業系統實驗可以跟著做。

1.3 計算機網路

基礎書籍:《圖解 HTTP》、《圖解 TCP_IP》、《網路是怎樣連線的》。

進階書籍:《計算機網路·自頂向下方法》、《TCP_IP 詳解》。

在這裡插入圖片描述

同樣,知道你看不下去書籍,在中國大學 MOOC 上面有一些名校的公開的網路課程,都是比較基礎的,可以在上面找找,有挺多質量不錯的。

1.4 資料庫

資料庫的重要性就不用說了,必備的知識。

基礎的 sql 掌握起來應該沒啥難度,自己多練練就行了,推薦書籍《SQL 必知必會》、《MySQL 必知必會》。

想要進階,可以多瞭解下資料庫一些基本設計概念,推薦書籍《資料庫系統概念》,對於 mysql 進階,例如 B+ 樹儲存模型、事務、索引、鎖等,推薦書籍《高效能 mysql》、《MySQL 技術內幕:InnoDB 儲存引擎》。
在這裡插入圖片描述

2. Go 語言基礎

終於來到正題 Go 語言了,如果你是 Go 語言零基礎,或者剛入門不久,都可以順著我的這個路徑學習鞏固一下。

推薦入門書籍《Go 語言學習筆記》、《Go 語言趣學指南》、《Head First Go》,跟著書籍多敲敲程式碼,入門沒有太大的問題。
在這裡插入圖片描述
還有我私藏的一些線上學習 Go 語言的資料:

學完基礎,知道你可能想試試手,這裡推薦幾個初級的專案,隨意挑選自己感興趣的一兩個即可。

3. Go 語言進階

掌握了基礎的 Go 相關語法知識之後,可能需要更加深入的理解 Go 語言,對於初學者來說,可以挑選自己感興趣的部分看看,想一下子全部吃透不太可能。

注意這塊內容是比較獨立的,可隨時檢視,不會妨礙你學習後面的內容。

這裡推薦書籍《Go 程式設計語言》(號稱 Go 聖經)、《Go 專家程式設計》、《Go 語言高階程式設計》。
在這裡插入圖片描述
線上的學習資料:

想要進一步鞏固所學知識,這裡推薦幾個比較進階的專案給你:

  • rosedb:github.com/roseduan/rosedb,不要臉的推薦一下自己的專案,一個用 Go 實現的簡易高效的 k-v 儲存引擎。

  • gochat:github.com/LockGit/gochat,一個 Go 語言實現的輕量級 im 系統,對網路方面熟悉或者感興趣的可以看看。

  • 7DaysGolang:github.com/geektutu/7days-golang,7 天使用 Go 從零實現 web 框架、分散式快取、ORM 框架,、RPC 框架,程式碼量不多,但是質量挺不錯的。

5. Web 開發

基礎知識掌握之後,可以上手做一些 web 應用,進一步瞭解更多的 Go 語言相關框架以及生產環境中的常用中介軟體。

推薦書籍《Go Web 程式設計》。
在這裡插入圖片描述
可以學習下 web 框架 Gin、beego:兩個框架都比較的流行,選擇其中一個其實就可以了,推薦 Gin。官方文件都有中文,照著 demo 敲一下,瞭解下怎麼處理 HTTP 請求的。

最好掌握一下比較流行的 ORM 框架 Gorm,有官方中文文件,照著 demo 敲一下基本上兩天就能掌握了,後面遇到不會的再來查。

基本上看官方文件就可以了,不用去找其他的書籍,沒有比官方文章更正宗的資料了。

推薦幾個使用 Go 構建的基礎 web 專案:

對於 web 專案的學習,可能有同學覺得專案太龐雜,根本不知道怎麼下手。我想建議的是,可以在本地把專案跑起來,然後斷點除錯一個 HTTP 請求的整體流程,搞懂了一個介面,其他的大同小異。

6. 微服務

目前 Go 在微服務中的應用也比較廣泛,但說實話,微服務是一個太龐大的話題,你不可能把每一個核心的問題都能夠搞清楚,而且也沒條件,或許只能在公司的具體的微服務生產環境中,才能夠對相關的概念有更加深刻的體會。

推薦一本微服務概述的基礎書籍《微服務設計》、《微服務架構設計模式》,可以幫助你理解微服務的建模、整合、測試、部署和監控的一些基礎知識。
在這裡插入圖片描述
推薦 Go 語言的微服務框架 GoKit、GoMicro、go-zero、kratos,可以隨便選擇一個,理解其基本的用法、設計等等。其中 go-zero 和 kratos 是國內開源的,因此都有比較詳細的中文文件。

這裡推薦一個線上學習的資料:

ewanvalentine.io/microservices-in-...

手把手實現一個簡單的 Go 微服務專案,你可以通過這個專案來學習微服務的相關知識,並且有中文版。


最後,再提醒一下,文中提到的所有書籍,都可以在公眾號【roseduan寫字的地方】後臺回覆相應的關鍵字獲取:【演算法、作業系統、網路、資料庫、Go、微服務】,按需自取。

在這裡插入圖片描述

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章