Go 語言學習路線來啦


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


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


提醒一下,文中提到的所有書籍,都可以在公衆號後臺回覆相應的關鍵字獲取:算法、操作系統、網絡、數據庫、Go、微服務,按需自取。





一、基礎知識


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


數據結構和算法


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



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


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


https://github.com/roseduan/algo-learn


項目使用 Go、Java、Python 實現了常用的數據結構和算法,以及相關 Leetcode 題目。


操作系統


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


學習資源推薦:書籍《操作系統概念》、《深入理解計算機系統》、《現代操

作系統》。

書籍看不下去的,很能理解你(因爲我也看不下去),這裏推薦一個學堂在線的操作系統課程:


https://www.xuetangx.com/course/THU08091000267/1516699


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


計算機網絡


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

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



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


數據庫


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


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


想要進階,可以多瞭解下數據庫一些基本設計概念,推薦書籍《數據庫系統概念》,對於 mysql 進階,例如 B+ 樹存儲模型、事務、索引、鎖等,推薦書籍《高性能 mysql》、《MySQL 技術內幕:InnoDB 存儲引擎》。


二、Go 語言基礎


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


推薦入門書籍《Go 語言學習筆記》、《Go 語言趣學指南》、《Head First Go》,跟着書籍多敲敲代碼,入門沒有太大的問題。

還有我私藏的一些在線學習 Go 語言的資料:


1. Go By Example 中文版 : https://gobyexample-cn.github.io,使用代碼示例來學習 Go 語言。


2. Go 面試題 : http://www.topgoer.cn/docs/gomianshiti/mianshiti,也是使用代碼示例來講解 Go,用來準備面試也是很好的。


3. 無聞大佬的在線入門指南 : https://github.com/unknwon/the-way-to-go_ZH_CN


4. 跟着單元測試學習 Go : https://github.com/quii/learn-go-with-tests,有中文版。


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


1. starcharts : https://github.com/caarlos0/starcharts,項目的功能是生成 Github 上面的項目的 star 趨勢圖,核心代碼不多,用來練手很合適。


2. gorched : https://github.com/zladovan/gorched,使用 Go 寫的一個小遊戲。


3. pacgo : https://github.com/danicat/pacgo,也是使用 Go 寫的一個小遊戲,每一步都有詳細的描述和代碼實現。


4. wechat-go : https://github.com/songtianyi/wechat-go,微信 web 版 API 的 Go 實現,模擬微信網頁版的登錄/聯繫人/消息收發等功能。


三、Go 語言進階


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


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

這裏推薦書籍《Go 程序設計語言》(號稱 Go 聖經)、《Go 專家編程》、《Go 語言高級編程》。

在線的學習資料:


1.《Go 語言設計與實現》: https://draveness.me/golang。


2.《Go 語言高級編程》: https://chai2010.cn/advanced-go-programming-book。


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


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


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


3. 7DaysGolang : https://github.com/geektutu/7days-golang,7 天使用 Go 從零實現 web 框架、分佈式緩存、ORM 框架,、RPC 框架,代碼量不多,但是質量挺不錯的。


四、Web 開發


基礎知識掌握之後,可以上手做一些 web 應用,進一步瞭解更多的 Go 語言相關框架以及生產環境中的常用中間件,推薦書籍《Go Web 編程》。

可以學習下 web 框架 Gin、beego:兩個框架都比較的流行,選擇其中一個其實就可以了,推薦 Gin。官方文檔都有中文,照着 demo 敲一下,瞭解下怎麼處理 HTTP 請求的。


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


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


推薦幾個使用 Go 構建的基礎 web 項目:


1. gin-vue-admin : https://github.com/flipped-aurora/gin-vue-admin,使用 Gin 框架構建的後臺管理系統。


2. ferry : https://github.com/lanyulei/ferry,基於 Gin + Vue + Element UI 前後端分離的工單系統。


3. go-admin : https://github.com/go-admin-team/go-admin,Gin + Vue + Element UI 的前後端分離權限管理系統。


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


五、微服務


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


推薦一本微服務概述的基礎書籍《微服務設計》、《微服務架構設計模式》,可以幫助你理解微服務的建模、集成、測試、部署和監控的一些基礎知識。

推薦 Go 語言的微服務框架  GoKit、GoMicro、go-zero、kratos,可以隨便選擇一個,理解其基本的用法、設計等等。其中 go-zero 和 kratos 是國內開源的,因此都有比較詳細的中文文檔。


這裏推薦一個在線學習的資料:


https://ewanvalentine.io/microservices-in-golang-part-1


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




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




題圖:from wallheaven.cc


本文分享自微信公衆號 - 編程三分鐘(coding3min)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章