Go
是什麼
Go(Golang)是 Google 推出的靜態型別、編譯型語言,為簡潔、快速構建和併發而設計。它生成單一的靜態二進位制檔案——一個可以直接複製並執行、無需另外安裝任何東西的自包含檔案。它的特性集精簡而剋制,專為編寫可靠的網路服務和命令列工具而生。
優勢
- 編譯為單一、無依賴的二進位制檔案——部署極為簡單。
- 內建併發支援——就像商店開出多個收銀臺同時招呼大量顧客——通過 goroutine 和 channel 實現。
- 編譯快、執行快,並帶有垃圾回收。
- 強大的標準庫——內建工具如用於網路請求的 (超文本傳輸協議)、用於資料的 (JavaScript 物件表示法)以及 crypto——以及強制統一的格式化(
gofmt)。
取捨
- 刻意保持精簡:錯誤處理冗長(
if err != nil),表達力有限。 - 泛型出現得晚,與其他語言相比仍較樸素。
- 不太適合重度的資料科學或 UI 工作。
- 有助於可讀性的簡潔,在大型程式碼庫中可能顯得重複。
何時使用
當你需要一個快速、自包含的後端服務、一個 (命令列介面)工具,或網路基礎設施(代理、(應用程式介面)、守護程序)時,可以考慮 Go。它在部署簡單性、效能可預測和併發重要的場景中表現出色——這也是為什麼如此多雲原生工具(Docker、Kubernetes)都用它編寫。
與 vibe coding 的契合度
AI 助手處理 Go 表現很好,正是因為這門語言精簡、慣用法鮮明——做某件事通常只有一種顯而易見的方式,所以生成的程式碼往往很規範、符合 gofmt。引導 AI 顯式處理錯誤而非忽略它們,在引入依賴之前優先使用標準庫,並在併發時配合恰當的 context 取消機制來使用 goroutine。讓它包含一個 go.mod 的模組路徑和一個可執行的 main,這樣你就能立刻 go run 並逐塊驗證。
package main
import (
"fmt"
"strings"
)
func main() {
words := strings.Fields("go is fast and simple")
counts := map[string]int{}
for _, w := range words {
counts[w]++
}
fmt.Println(counts)
}