適合 Go 新手學習的開源項目——在 GitHub 學編程

做者:HelloGitHub-小魚乾&滷蛋html

故事要從 2007 年提及。由於受夠了 C++ 煎熬的 Google 首席軟件工程師 Rob Pike 召集 Robert Griesemer 和 Ken Thompson 兩位牛人,決定創造一種新語言來取代 C++,這就是 Go 的由來。git

在 2009 年 11 月 10 日 Google 正式發行 Go 這一編程語言。Go 從 C 語言繼承了類似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等不少思想,還有 C 語言一直所看中的編譯後機器碼的運行效率以及和現有操做系統的無縫適配。程序員

Golang 項目地址:https://github.com/golang/gogithub

通過十多年的發展,截止北京時間:2020 年 11 月 17 日定稿時 Go 的最新版本已經到了 1.15.5。同時國外的 Twitter、Google、Netflix 等大廠和國內的字節跳動、騰訊、B 站等公司都在用 Go 開發他們的主要業務,諸如 PingCAP 這一新興 NewSQL 數據庫廠商的主產品 TiDB 更是使用 Go 進行開發,併成爲了 GitHub 上知名的 Go 語言開源項目。可見 Go 在互聯網公司的開發地位日漸重要,在開源社區也十分活躍。golang

那這個時候新手「上車」晚不晚?GitHub 上面有什麼好玩、入門級的 Go 語言項目?web

這裏是 HelloGitHub 的《GitHub 上適合新手的開源項目》系列,共計 5 篇文章:數據庫

  1. C++ 篇
  2. Python 篇
  3. Go 篇
  4. Java 篇
  5. JavaScript 篇

本期是 Go 篇,下文的開源項目選自 HelloGitHub 往期月刊。正如 Go 語言之父的 Rob Pike 所說的 Less is more or less is less,本文也本着這一原則:大道至簡。下面的每個 Go 語言開源項目都能獨當一面,成爲新手的學習項目並且合在一塊兒能夠爲你提供更爲全面的 Go 認知——1 + 1 > 2 。編程

Talking is cheap, Let's Go 🚗緩存

Part One:師父領進門

1.1 真正的入門指南:the-way-to-go_ZH_CN

GitHub 地址→https://github.com/unknwon/the-way-to-go_ZH_CNcookie

《Go 入門指南》這本開源書籍是一位 Golang 的佈道者(無聞)苦於當時國內沒有比較好的 Go 語言書籍,而着手翻譯的一本國外書籍《The Way to Go》。該書經過對官方的在線文檔、名人博客、書籍、相關文章以及演講的資料收集和整理,並結合我自身在軟件工程、編程語言和數據庫開發的授課經驗,將這些零碎的知識點組織成系統化的概念和技術分類來進行講解。

該書將從最基礎的概念講起,同時也會討論一些相似在應用 goroutine 和 channel 時有多少種不一樣的模式,如何在 Go 語言中使用谷歌 API,如何操做內存,如何在 Go 語言中進行程序測試和如何使用模板來開發 Web 應用這些高級概念和技巧。

閱讀地址→https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

1.2 從零開始學 Go Web 編程:build-web-application-with-golang

GitHub 地址→https://github.com/astaxie/build-web-application-with-golang

《Go Web 編程》這本開源書籍,從零開始手把手教你 Go 的環境安裝和配置、基本語法再到 Go Web 開發的方方面面。可謂是一書在手,「天下」(Go Web)任我行。固然書寫得再好,也是「師傅領進門,修行靠我的啊!「

閱讀地址→https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/SUMMARY.md

Part Two:再上一層樓

2.1 七天用 Go 從零實現系列:7days-golang

GitHub 地址→https://github.com/geektutu/7days-golang

用 Go 分別寫一個:Web 框架、分佈式緩存、ORM 框架、RPC 框架的實戰教程。有些東西看懂了,不必定會用,會用了也不必定能本身搞出來。因此從零寫一個框架,瞭解其中的細節,才能算上真正懂了吧。

在線閱讀→https://geektutu.com/post/gee.html

2.2 Go 學習之路:golang-developer-roadmap

GitHub 地址→https://github.com/Alikhll/golang-developer-roadmap

《Go 開發者路線圖》是一個成爲 Go 開發的學習路線。一圖勝千言,選取這個項目是爲了讓你們能快速瞭解 Go 所需學習的知識點和前進的方向。

2.3 Go 高級編程:advanced-go-programming-book

《Go 語言高級編程》做爲針對有必定 Go 基礎的進階書籍,內容涵蓋併發、GOC 編程、Go 彙編語言、RPC 實現、Web 框架實現、分佈式系統等高階主題。該書的附錄也是一大亮點,收錄了 Go 有趣的代碼片斷、Go 常見坑。要想 Golang 玩得溜,得在 Go 高級編程下功夫 [手動狗頭]

GitHub 地址→https://github.com/chai2010/advanced-go-programming-book

在線閱讀→https://chai2010.cn/advanced-go-programming-book/

Part Three:是時候展現真正的技術了

3.1 星圖:starcharts

GitHub 地址→https://github.com/caarlos0/starcharts

這個項目是經過可視化的方式展現 GitHub 上 star 的增加曲線,也就生成是「星圖」。推薦這個項目主要是運行簡單和直觀的數據可視化,能夠快速地感覺到 Go 開源項目帶來的便利。我第一次玩這個項目的時候不會 Go 語言,可是參考這個項目寫一個 Python 版本的星圖,因此我想已經入門 Go 的各位確定也能看懂。

有的小夥伴可能會說我沒有開源項目、個人項目都沒有 star 我學這個項目沒用,我想了下確實是缺乏些動力。若是拋開 GitHub 的 star 元素,還有一個適用更多場景的 Go 數據可視化項目:go-echarts。來吧,感覺下數據的律動。

GitHub 地址→https://github.com/go-echarts/go-echarts

3.2 來 Chat 下:gochat

GitHub 地址→https://github.com/LockGit/gochat

gochat 是純 Go 實現的輕量級即時通信系統。技術上各層之間經過 RPC 通信,使用 Redis 做爲消息存儲與投遞的載體,相對 Kafka 操做起來更加方便快捷。各層之間基於 etcd 服務發現,在擴容部署時將會方便不少。架構、目錄結構清晰,文檔詳細。並且還提供了 Docker 一鍵構建,安裝運行都十分方便。

3.3 給!拿去用:annie

GitHub 地址→https://github.com/iawia002/annie

Go 編寫的下載快速、使用簡單、程序純淨的視頻下載工具。支持嗶哩嗶哩、YouTube 等視頻網站。可做爲前段時間被封禁:youtube-dl 的替代品(目前已從新上架),它真的很強大!先感覺下 annie 帶來的便利,可能就有興趣去探究它的源碼啦。

$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/

 Site:      嗶哩嗶哩 bilibili.com
 Title:     【2018拜年祭單品】相遇day by day
 Type:      video
 Stream:
     [default]  -------------------
     Quality:         高清 1080P60
     Size:            220.65 MiB (231363071 Bytes)
     # download with: annie -f default "URL"

 16.03 MiB / 220.65 MiB [==>----------------------------]   7.26% 9.65 MiB/s 19s

最後

推薦幾個 GitHub 上的大佬:

爲何沒寫人物介紹?我只是一個小小的 follower,瞭解的只是他們 GitHub 上的項目,其它的我都是道聽途說,不能亂寫。固然還有不少在 GitHub 貢獻巨大的大佬們,沒寫到的不要打我呀!還不是由於大家不來 HelloGitHub 推薦項目嗎?😢

本文分享 CNBlog - 削微寒的程序員之路。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。