シンプルで高速。インフラ・マイクロサービス向き
速い・シンプル・並行処理が得意。インフラの言語
Googleが開発。静的型付けコードを実行する前にデータの型を確認する仕組み。バグを事前に検出できるでコンパイルが速く、実行バイナリが1ファイルで完結するためデプロイが簡単。 ゴルーチンGoの軽量な並行処理の単位。OSスレッドより数千倍軽く、大量リクエストを効率よく処理できるによる並行処理が得意で、Docker・Kubernetes・Terraformなどインフラツールの大半がGoで書かれている。
高トラフィックAPIサーバー:毎秒数万〜数十万リクエストを捌く場面でPythonより大幅に有利。メモリ使用量も少ない。
インフラ・CLIツール:シングルバイナリで配布できるためサーバーへのデプロイやCLIツール配布が非常に簡単。
マイクロサービス:軽量で起動が速く、コンテナ(Docker)との相性が良い。gRPCとの組み合わせが定番。
有名事例:Docker・Kubernetes・Terraform・Grafana・Uber(APIゲートウェイ)・Dropbox(高性能部分)
| 観点 | Go | Python | Rust |
|---|---|---|---|
| 実行速度 | 速い | 遅め | 最速クラス |
| 学習コスト | 低め | 低い | 非常に高い |
| 並行処理 | ゴルーチンで容易 | asyncio(やや難) | 安全だが複雑 |
| メモリ管理 | GC(自動) | GC(自動) | 手動(安全) |
| 向いている場面 | 高トラフィックAPI・インフラ | AI・PoC | 組み込み・OS |
選ぶ理由:
大量リクエストを捌くAPIに最適。シングルバイナリでデプロイが楽。Rustほど難しくなく、Pythonより速い「ちょうどいい」言語。
選ばない理由:
AIアプリのPoCフェーズでは選ばない。Pythonライブラリ(PyTorch等)のエコシステムに勝てない。ジェネリクスが弱く抽象的な設計が難しい場面も。
パッケージマネージャ:go mod(標準)
主要フレームワーク:
主要ライブラリ:
ランタイム:
Hello World
package main
import "fmt"
func main() { fmt.Println("Hello") }
goroutine と channel
ch := make(chan int)
go func() { ch <- 42 }()
fmt.Println(<-ch)
context によるキャンセル伝播
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
select { case <-ctx.Done(): return }
初級(目安: 〜2週間)
中級(目安: 〜1-2ヶ月)
上級(目安: 〜3-6ヶ月)