這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go語言於2009年11月正式宣布推出,成為開放原始碼項目,發展至今已經具有越來越廣泛的影響力,今年更是在 TIOBE 程式設計語言熱門排行榜中上升了 34 位,躋身 20 強。很多開發人員也逐漸將目光投向這門語言,本文整理了部分比較好的學習和應用 Go 語言的開發項目,希望為沒有接觸過這門語言的開發人員們提供一個學習和瞭解這門語言的途徑。
關於 Go 語言:
Go 是Google開發的一種編譯型,並髮型,並具有記憶體回收功能的程式設計語言。
一、入門篇
0.開源圖書 《Go Web編程》
一本開源的書籍《Go Web編程》《build web application with golang》。書中作者主要分享了Go寫web應用的一些東西:
- 對於從php/python/ruby轉過來的同學瞭解go怎麼寫web應用開發的
- 對於從c/c++轉過來的同學瞭解web到底是怎麼運行起來的
1.《The Way to Go》中文版
由於目前國內並沒有比較好的 Go 語言書籍,而國外的優秀書籍因為英文的緣故在一定程度上也為不少 Go 語言愛好者帶來了一些學習上的困擾,儘管《The Way to Go》這本名對目前 Go 語言版本來說有小部分內容相對過時,但是為當下不可多得的好書,部分內容已獲得作者同意根據當前 Go 語言版本進行修改。並且以開源的形式免費分享給有需要的 Go 語言愛好者。
2.視頻語音教程《Go 編程基礎》
《Go 編程基礎》是一套針對 Google 出品的Go語言的視頻語音教程,主要面向新手層級的學習者。每堂課都會建立一個檔案(例如:lecture1.md)作為課堂筆記。課堂筆記中裡麵包含了該堂課所涵蓋的知識點以及知識點開始講解的時間點,方便學習者快速定位要瞭解的部分,節省不必要浪費的時間。此外,如果教程中因口誤或其它原因使學習者產生迷惑的部分,同樣會在課堂筆記中進行補充說明。
3.Go 的包文檔中文翻譯
這是 Go 語言的標準包和部分第三方包的包文檔中文翻譯。
項目源碼:http://git.oschina.net/liudiwu/pkgdoc
線上瀏覽:http://mygodoc.oschina.mopaas.com/
二、開發篇
0.Go 語言開發工具 LiteIDE
LiteIDE 是一款開源、跨平台的輕量級Go語言整合式開發環境(IDE)。
1.Eclipse 的 Go 外掛程式 GoClipse
GoClipse 是一個為Eclipse平台添加 Go 語言編程功能的 Eclipse 外掛程式。GoClipse 的目的是為初學者創造一個開發 Go 語言的環境。平台發展比較緩慢,但一直在持續。
2.基於 Web 的團隊 Go 語言識別碼E Wide
目前較為流行的 Go IDE 都有一些缺陷或遺憾:
- 文字編輯器類(vim/emacs/sublime/Atom 等):對於新手門檻太高,搭建複雜
- 外掛程式類(goclipse 等):需要原 IDE 支援,不夠專業
- LiteIDE:介面不夠 modern
- 沒有團隊開發體驗
Go IDE 很少,用 Go 本身開發的 IDE 更是沒有,而 Go IDE 這是一個很好的嘗試。
線上體驗:https://wide.b3log.org
3.Go的全堆棧Web架構 Revel
Revel 是 Go 語言的架構,其思路完全來自 Java 的 Play Framework。
4.Go 程式調試工具 godebug
godebug 是一個與眾不同的 Go 程式調試工具,傳統的編譯型語言調試器使用底層系統調用並讀取二進位檔案用於調試各類符號。使用起來很麻煩而且很難移植。godebug 使用不同的方法,直接把源碼作為目標程式,在每一行插入調試代碼,然後編譯並運行。結果就是一個全功能的調試器,完全可以移植到不同平台。事實上,由於有了 gopherjs ,你也可以在瀏覽器上進行調試。
三、應用篇
0.極易搭建的自助 Git 服務 Gogs
Gogs 的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助 Git 服務。使用 Go 語言開發使得 Gogs 能夠通過獨立的二進位分發,並且支援 Go 語言支援的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
1.Go 爬蟲軟體 Pholcus
Pholcus(幽靈蛛)是一款純Go語言編寫的支援分布式的高並發、重量級爬蟲軟體,定位於互連網資料擷取,為具備一定Go或JS編程基礎的人提供一個只需關注規則定製的功能強大的爬蟲工具。
2.遊戲伺服器架構 Leaf/go
Leaf 是一個使用 Go 語言開發的開源遊戲伺服器架構,注重運行效率並追求極致的開發效率。Leaf 適用於幾乎所有的遊戲類型。具有以下特點:良好的使用體驗、穩定性好、多核支援、良好的模組支援。
3.Go 非同步任務隊列 Go Machinery
Machinery 是一個 Go 語言的非同步任務隊列和作業隊列,基於分布式訊息傳遞。類似 Python 的 Celery 架構。Machinery 中的任務(或者作業)可通過多個 worker 在很多伺服器上並發的執行,或者可在單個伺服器上利用 Go 的協程運行多個 worker 進程。
4.Go 應用程式框架 beego
beego是一個用Go開發的應用程式框架,思路來自於tornado,路由設計來源於sinatra,支援如下特性:MVC、REST、智能路由、日誌調試、組態管理、模板自動渲染、layout設計、中介軟體插入邏輯、方便的JSON/XML服務。
5.HTTP 流量複製工具 Gor Go
Gor 是用 Go 編寫的簡單 HTTP 流量複製工具,主要是為了從生產伺服器返迴流量到開發環境。使用 Gor 可以在實際的使用者會話中測試代碼。
6.Go 語言的 Web 架構 Martini
Martini 是一個非常新的 Go 語言的 Web 架構,使用 Go 的 net/http 介面開發,類似 Sinatra 或者 Flask 之類的架構,你可使用自己的 DB 層、會話管理和模板。
7.Go 的 WebSocket 架構 Melody
Melody 是一個 Go 語言的微型 WebSocket 架構,基於 github.com/gorilla/websocket 開發。
8.Go 開發 MySQL Proxy 項目 kingshard
kingshard是一個由Go開發高效能MySQL Proxy項目,kingshard在滿足基本的讀寫分離的功能上,致力於簡化MySQL分庫分表操作;能夠讓DBA通過kingshard輕鬆平滑地實現MySQL資料庫擴容。 kingshard的效能是直連MySQL效能的80%以上。
9.Go 開發的 IM 和推送服務 goim
goim 是一個支援叢集的im及即時推送服務(支援websocket,http和tcp協議)。
Go 測試載入器 GoConvey
GoConvey 是個相當不錯的 Go 測試載入器,支援 go test。可直接在終端視窗和瀏覽器上使用。
不過雖然 Go 發展很快,開發人員們還是應該根據自己的實際情況選擇是否要深入瞭解這門語言。如果各位還有其他在學習 Go 語言方面好的開源項目,歡迎在評論區留言,以供學習和交流。