Google Go 語言從入門到應用必備開源項目

Go 語言於 2009 年 11 月正式宣佈推出,成爲開放源代碼項目,發展至今已經具備愈來愈普遍的影響力,今年更是在 TIOBE 編程語言排行榜中躋身 20 強。不少開發者也逐漸將目光投向這門語言,本文整理了部分比較好的學習和應用 Go 語言的開發項目,但願爲沒有接觸過這門語言的開發者們提供一個學習和了解這門語言的途徑。php

關於Go語言前端

Go 是 Google 開發的一種編譯型,併發型,並具備垃圾回收功能的編程語言。因爲其構建簡化了併發運行代碼的工做,存在並行編程模式,所以這一語言也被設計用來解決多處理器的任務。Go語言是基於Inferno操做系統所開發的,並在Linux及Mac OS X平臺上進行了實現,後追加 Windows 系統下的實現。python

Go 語言起源 2007 年,並於 2009 年正式對外發布。它從 2009 年 9 月 21 日開始做爲谷歌公司 20% 兼職項目,即相關員工利用 20% 的空餘時間來參與 Go 語言的研發工做。該項目的三位領導者均是著名的 IT 工程師:Robert Griesemer,參與開發 Java HotSpot 虛擬機;Rob Pike,Go 語言項目總負責人,貝爾實驗室 Unix 團隊成員,參與的項目包括 Plan 9,Inferno 操做系統和 Limbo 編程語言;Ken Thompson,貝爾實驗室 Unix 團隊成員,C 語言、Unix 和 Plan 9 的創始人之一,與 Rob Pike 共同開發了 UTF-8 字符集規範。這是一個由計算機領域 「發明之父」 所組成的黃金團隊,他們對系統編程語言,操做系統和並行都有着很是深入的看法。c++

關1、入門篇git

0. 開源圖書 《Go Web編程》golang

一本開源的書籍《Go Web編程》《build web application with golang》。書中做者主要分享了Go寫web應用的一些東西:web

  • 對於從php/python/ruby轉過來的同窗瞭解go怎麼寫web應用開發的數據庫

  • 對於從c/c++轉過來的同窗瞭解web究竟是怎麼運行起來的編程

1.《The Way to Go》中文版vim

因爲目前國內並無比較好的 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/

2、開發篇

0. Go 語言開發工具 LiteIDE

LiteIDE 是一款開源、跨平臺的輕量級Go語言集成開發環境(IDE)。

1. 基於 Web 的團隊 Go 語言 IDE Wide

目前較爲流行的 Go IDE 都有一些缺陷或遺憾:

  • 文本編輯器類(vim/emacs/sublime/Atom 等):對於新手門檻過高,搭建複雜

  • 插件類(goclipse 等):須要原 IDE 支持,不夠專業

  •  LiteIDE:界面不夠 modern 

  •  沒有團隊開發體驗

Go IDE 不多,用 Go 自己開發的 IDE 更是沒有,而 Go IDE 這是一個很好的嘗試。

在線體驗:https://wide.b3log.org

2. Eclipse 的 Go 插件 GoClipse

GoClipse 是一個爲Eclipse平臺添加 Go 語言編程功能的 Eclipse 插件。GoClipse 的目的是爲初學者創造一個開發 Go 語言的環境。平臺發展比較緩慢,但一直在持續。

3. 代碼編輯器 Lime

Fredrik Ehnbom 用 Go 語言開發了新代碼編輯器 Lime Text,號稱Sublime Text 的開源實現。其兼容Sublime Text的快捷鍵設置,兼容 Textmate 的顏色主題及語法定義。 Lime Text 的後端採用 Go 實現,前端則使用了 ermbox,Qt (QML) 及 HTML/JavaScript。

4. Go 的全堆棧 Web 框架 Revel

Revel 是一個高生產力的 Go 語言 Web 框架,其思路徹底來自 Java 的 Play Framework。Revel 框架支持熱編譯,當編輯、保存和刷新源碼時,Revel 會自動編譯代碼和模板;全棧特性,支持路由、參數解析、緩存、測試、國際化等功能。

5. Go 程序調試工具 godebug

godebug 是一個不同凡響的 Go 程序調試工具,傳統的編譯型語言調試器使用底層系統調用並讀取二進制文件用於調試各種符號。使用起來很麻煩並且很難移植。godebug 使用不一樣的方法,直接把源碼做爲目標程序,在每一行插入調試代碼,而後編譯並運行。結果就是一個全功能的調試器,徹底能夠移植到不一樣平臺。事實上,因爲有了 gopherjs ,你也能夠在瀏覽器上進行調試。

6. Go 測試工具 GoConvey

GoConvey 是個至關不錯的 Go 測試工具,支持 go test。可直接在終端窗口和瀏覽器上使用。

3、應用篇

0. Linux 容器引擎 Docker

Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app)。幾乎沒有性能開銷,能夠很容易地在機器和數據中心中運行。最重要的是,他們不依賴於任何語言、框架或包裝系統。

1. Redis 集羣解決方案 Codis

Codis 是一個分佈式 Redis 解決方案, 對於上層的應用來講, 鏈接到 Codis Proxy 和鏈接原生的 Redis Server 沒有明顯的區別 (不支持的命令列表), 上層應用能夠像使用單機的 Redis 同樣使用, Codis 底層會處理請求的轉發, 不停機的數據遷移等工做, 全部後邊的一切事情, 對於前面的客戶端來講是透明的, 能夠簡單的認爲後邊鏈接的是一個內存無限大的 Redis 服務。目前豌豆莢已經在使用該系統。

架構:

2. 極易搭建的自助 Git 服務 Gogs

Gogs 的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助 Git 服務。使用 Go 語言開發使得 Gogs 可以經過獨立的二進制分發,而且支持 Go 語言支持的全部平臺,包括 Linux、Mac OS X、Windows 以及 ARM 平臺。

3 . Go 爬蟲軟件 Pholcus

Pholcus(幽靈蛛)是一款純Go語言編寫的支持分佈式的高併發、重量級爬蟲軟件,定位於互聯網數據採集,爲具有必定 Go 或 JS 編程基礎的人提供一個只需關注規則定製的功能強大的爬蟲工具。

4. Go 應用框架 beego

beego是一個用Go開發的應用框架,思路來自於tornado,路由設計來源於sinatra,支持以下特性:MVC、REST、智能路由、日誌調試、配置管理、模板自動渲染、layout設計、中間件插入邏輯、方便的JSON/XML服務。

5. 開源消息系統 NSQ

NSQ 是無中心設計、節點自動註冊和發現的開源消息系統。可做爲內部通信框架的基礎,易於配置和發佈。架構:

6. 時序、事件和指標數據庫 InfluxDB

InfluxDB 是一個開源分佈式時序、事件和指標數據庫。使用 Go 語言編寫,無需外部依賴。其設計目標是實現分佈式和水平伸縮擴展。

7. 開源 PaaS 系統 Flynn

Flynn 是一個開源的 PaaS 系統,由 Docker 開發。採用 Go 語言編寫。支持數據庫包括 Postgres、Redis 和 MongoDB. Flynn 使用徹底組件化模塊化的設計,任何一個組件和模塊均可以獨立的進行替換。

開源中國組織翻譯的 Flynn 中文文檔:http://flynn.mydoc.io

8. 容器集羣管理系統 Kubernetes

Kubernetes 是來自 Google 雲平臺的開源容器集羣管理系統。基於 Docker 構建一個容器的調度服務。該系統能夠自動在一個容器集羣中選擇一個工做容器供使用。其核心概念是 Container Pod。

9. 分佈式 SQL 數據庫 TiDB

TiDB 是國內 PingCAP 團隊開發的一個分佈式 SQL 數據庫。其靈感來自於 Google 的 F1, TiDB 支持包括傳統 RDBMS 和 NoSQL 的特性。

TiDB 的源碼已經託管在 Git@OSC 上,詳情請查看:http://git.oschina.net/ngaut/tidb

架構:

10. Go 開發的 IM 和推送服務 goim

goim 是一個支持集羣的im及實時推送服務(支持websocket,http和tcp協議)。

不過雖然 Go 發展很快,開發者們仍是應該根據本身的實際狀況選擇是否要深刻了解這門語言及其應用。若是各位還有其餘在學習 Go 語言方面好的開源項目,歡迎在評論區留言,以供學習和交流。

相關文章
相關標籤/搜索