給,你要的 Go 學習路線圖來啦

先上圖

Go 開發者路線圖

Go Developer Roadmap

之前老有羣友問誰有 Go 開發者學習路線圖,今天恰巧總結了一下。首先介紹一下這個路線圖 [1] 是在 draw.io[2] 網站上進行製作的,想法來源於 : ASP.NET Core Developer Roadmap[3],簡體中文版翻譯版 Go 開發者路線圖 [4] 由rainyan翻譯出品。

大概從三點羅列了一下需要學的知識點:必會、推薦學習、可選擇瞭解。接下來我主要聊一下我覺得相對重要的一些模塊並推薦一些資源和文章,歡迎指正。

Go 基礎

Go 的基礎學習,推薦的是 golangbot[5] 這個網站,包含了 Go 學習的系列教程 [6] 從 HelloWorld 到文件操作。個人感覺這個系列教程也挺不錯的。同時我也想到了 A Tour Of Go[7] 和 Go by Example[8] 網站教程,上面很多 example 和講解。golangbyexample[9] 也被我發現了,基礎教程的案例都比 gobyexample 和 golangbot 多一些,另外還配備了高級教程 [10],主要包括了基礎篇、進階專題、設計模式和一些數據結構。也強烈推薦大家學習溫習一波。

最後分享大家一個 Go 資源收集倉庫 Golang 從入門到跑路【羅列各種 Go 資源】[11]

SQL 基礎

這裏推薦學習的網站是 w3schools[12], 好久沒上這個網站了居然變的這麼 lv,哈哈哈。sql 的基礎不說了,大家都是 curd boy,

通用開發技能—開發原則

我看這裏提到了一些開發中需要遵循的一些原則:SOLID、DRY、YANGNI、KISS。這裏大概給大家逐一解釋一下:

SOLID:

是下面五個面向對象編程中的設計原則的縮寫。SOLID 在 Go 中的運用 dave[13] 博客中也有講解 SOLID Go Design[14],簡體中文由 Haohao Tian[15] 翻譯,詳細閱讀見 SOLID Go Design - Go 語言面向對象設計 [16]。

DRY:

Don’t Repeat Yourself的意思——不要重複你自己。此原則是讓我們在開發中把代碼和邏輯劃分爲更小的可重用單元。重複性代碼問題尤其是在多人維護的項目中也經常遇到,修改一處,其他邏輯部分也要修改極難維護。所以我們可以通過應用單一職責接口隔離等原則儘量拆分系統,模塊,類,方法 ·。使其每一個部件都是職責明確的並且可重用的。

YAGNI:

You aren't gonna need it 的縮寫,意思是指你不會需要它。主要思想是不要做過度設計,這是 ["極限編程"](https://en.wikipedia.org/wiki/Extreme_programming ""極限編程"") 提倡的原則,指的是你自以爲有用的功能,實際上都是用不到的

KISS:

Keep It Simple, Stupid的縮寫——保持簡單,愚蠢。KISS 原則是保持代碼可讀性和可維護性的重要手段

因爲簡單的代碼更容易維護和理解。那什麼是簡單的代碼呢?在我看來:每個方法只做一件事、處理很小的事情,行數最多控制在 30 行左右;變量、包名、方法的命名簡單隻戳其意;可擴展、易於修改重構。

小結

最後,我推薦一篇 cheaterlin 大佬寫的萬字詳文闡釋程序員修煉之道萬字詳文告訴你如何做 Code Review 這兩篇文章,閱讀量篇篇過萬,主要講述瞭如何去更好地寫 Go 代碼。

日誌

日誌的話目前爲止據我瞭解很多 Go 廠中 zap[22] 還是用的最多的。推薦閱讀

一文帶你由淺入深地解讀 Zap 的高性能

高性能 Go 日誌庫 zap 設計與實現

深度 | 從 Go 高性能日誌庫 zap 看如何實現高性能 Go 組件

Go 設計模式

Go 設計模式推薦的是 go-patterns[23],中文版的我這裏推薦的是 mohuishou 大佬的 golang design pattern go 設計模式筆記 [24] 的思維導圖分享。

設計原則

設計模式

總結

文章偏向於資源分享,希望此篇短文分享能給大家帶來一些收穫,更多學習嚮導可參考 Go 開發者路線圖。最後祝大家週末愉快。

參考資料

[1] 

路線圖: https://github.com/Alikhll/golang-developer-roadmap

[2] 

draw.io: https://draw.io

[3] 

ASP.NET Core Developer Roadmap: https://github.com/MoienTajik/AspNetCore-Developer-Roadmap

[4] 

Go 開發者路線圖: https://github.com/Alikhll/golang-developer-roadmap/blob/master/i18n/zh-CN/ReadMe-zh-CN.md

[5] 

golangbot: https://golangbot.com/

[6] 

Go 學習的系列教程: https://golangbot.com/learn-golang-series/

[7] 

A Tour Of Go: https://tour.golang.org/

[8] 

Go by Example: https://gobyexample.com/

[9] 

golangbyexample: https://golangbyexample.com/

[10] 

高級教程: https://golangbyexample.com/golang-comprehensive-tutorial/

[11] 

Golang 從入門到跑路【羅列各種 Go 資源】: https://github.com/jiujuan/go-collection

[12] 

w3schools: https://www.w3schools.com/sql/default.asp

[13] 

dave: https://dave.cheney.net/

[14] 

SOLID Go Design: https://dave.cheney.net/2016/08/20/solid-go-design

[15] 

Haohao Tian: https://github.com/llitfkitfk

[16] 

SOLID Go Design - Go 語言面向對象設計: https://blog.gokit.info/post/go-solid-design/

[17] 

SRP(Single Responsibility Principle) 單一職責: https://zh.wikipedia.org/wiki/%E5%8D%95%E4%B8%80%E5%8A%9F%E8%83%BD%E5%8E%9F%E5%88%99

[18] 

OCP(Open Closed Principle) 開閉原則: https://zh.wikipedia.org/wiki/%E5%BC%80%E9%97%AD%E5%8E%9F%E5%88%99

[19] 

LSP(Liskov Substitution Principle) 里氏替換: https://zh.wikipedia.org/wiki/%E9%87%8C%E6%B0%8F%E6%9B%BF%E6%8D%A2%E5%8E%9F%E5%88%99

[20] 

ISO(Interface Segregation Principle) 接口隔離: https://zh.wikipedia.org/wiki/%E6%8E%A5%E5%8F%A3%E9%9A%94%E7%A6%BB%E5%8E%9F%E5%88%99

[21] 

DIP(Dependency Inversion Principle) 依賴倒置 / 依賴反轉: https://zh.wikipedia.org/wiki/%E4%BE%9D%E8%B5%96%E5%8F%8D%E8%BD%AC%E5%8E%9F%E5%88%99

[22] 

zap: https://github.com/uber-go/zap

[23] 

go-patterns: http://tmrts.com/go-patterns/

[24] 

golang design pattern go 設計模式筆記: https://mp.weixin.qq.com/s/oTESBPt6mQjLGWc5g5iSQA##

歡迎關注 Go 招聘公衆號,獲取更多精彩內容。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/rPKO23mHDGofeyzeCIHJxQ