概觀
Go 提供速度、安全性以及開發人員特別愛用的網路應用程式工具
Go 的設計目標,就是讓開發人員可以快速地開發出可擴充又安全的網路應用程式。Go 內建容易使用、安全又高效能的網路伺服器,而且還包含自己的網路範本函式庫。Go 針對最新技術提供卓越的支援,從 HTTP/2、資料庫,例如 MySQL、MongoDB 和 Elasticsearch,到最新的加密標準,例如 TLS 1.3。Go 網路應用程式原生執行於 Google App Engine 和 Google Cloud Run(用於簡易擴充),或是透過 Go 的高移植性執行於任何環境、雲端或作業系統中。
主要優勢
跨平台部署速度驚人
對於企業而言,Go 是用於提供快速跨平台部署的首選項目。它擁有 goroutine、原生的編譯器,以及基於 URI 的套件命名空間,讓 Go 程式碼編譯成一個小而單一的二進位檔(無依賴關係),且運行速度非常快。
善用 Go 的效能表現,輕鬆擴充
Tigran Bayburtsyan,Hexact Inc. 的共同創辦人兼技術長,他總結了公司轉用 Go 的五個主要原因
-
編譯成單一二進位檔 —「使用靜態連結功能,Go 會根據作業系統類型和架構,將所有依賴函式庫和模組組合成一個單一的二進位檔檔案。」
-
靜態類型系統 —「類型系統對於大型應用程式來說非常重要。」
-
效能 —「Go 的效能表現較佳,這是因為它的並發模型和 CPU 可擴充性。當我們需要處理一些內部要求時,我們會使用獨立的 Goroutine 來處理,在資源量方面比 Python 執行緒少用了 10 倍。」
-
不需要 Web 架構 —「在大部分情況下,你真的不需要任何第三方函式庫。」
-
優秀的 IDE 支援和偵錯功能 —「將所有專案改寫成 Go 之後,我們的程式碼減少了 64%。」
特色使用者
客戶 | 簡要說明 | 使用 Go 的專案 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
開始使用
Go 網路開發書籍
網路架構
-
Echo
效能高、可擴充,且最簡化的 Go 網路架構
-
Flamingo
一個快速的開放原始碼架構,基於 Go,擁有乾淨且可擴充的架構
-
Gin
使用 Go 編寫,且具備類似 Martini 的 API 的網路架構。
-
Gorilla
針對 Go 程式語言的網路工具包。
路由器
-
net/http
標準函式庫 HTTP 套件
-
julienschmidt/httprouter
一個輕量且效能高的 HTTP 請求路由器
-
gorilla/mux
一個強大的 HTTP 路由器和 URL 對應器,用於使用 🦍 建立 Go 網路伺服器
-
Chi
一個輕量、符合慣例且可組態的路由器,用於建立 Go HTTP 服務。
資料庫與驅動程式
-
database/sql
一個標準函式庫介面,具有對 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大部分 SQL 資料庫的驅動程式支援
-
mongo-driver/mongo
MongoDB 支援的 Go 驅動程式
-
elastic/go-elasticsearch
一個針對 Go 的 Elasticsearch 用戶端
-
GORM
一個針對 Go 的 ORM 函式庫
-
Bleve
針對 Go 的全文檢索和索引
-
CockroachDB
資料庫的演變,專為雲端設計,提供可復原、一致且廣泛分佈的 SQL
課程
- 讓 Go 為您打造網路應用程式付費線上課程
專案
- gopherjs從 Go 編譯到 JavaScript 的編譯器,讓開發人員可以用 Go 編寫所有瀏覽器都會執行的前端程式碼。
- Hugo打造網站最快的框架
- Mattermost彈性且開放原始碼的訊息傳遞平台,支援安全的團隊合作
- Caddy由 Go 編寫,功能強大、專為企業打造且開放原始碼的網路伺服器,支援自動 HTTPS