Go言語(Golang)はGoogleが開発したシンプルで高速なプログラミング言語です。マイクロサービス・クラウドインフラ・高パフォーマンスAPIで急速に普及しています。
Goの特徴
- コンパイル速度が速い:大規模プロジェクトでも高速ビルド
- 実行速度が速い:C/C++に近いパフォーマンス
- Goroutine:軽量な並列処理で高い並行性
- シンプルな文法:学習コストが低い
- 静的型付け:コンパイル時にエラーを検出
基本文法
package main
import (
"fmt"
"strings"
)
func main() {
// 変数宣言
name := "太郎" // 型推論
var age int = 25 // 明示的な型
fmt.Printf("名前: %s、年齢: %d\n", name, age)
// 配列・スライス
fruits := []string{"りんご", "みかん", "バナナ"}
for i, fruit := range fruits {
fmt.Printf("%d: %s\n", i, fruit)
}
// マップ
scores := map[string]int{
"数学": 85,
"英語": 92,
}
fmt.Println(scores["数学"]) // 85
// 文字列操作
upper := strings.ToUpper(name)
fmt.Println(upper) // 太郎(日本語は変わらない)
}
// 関数
func add(a, b int) int {
return a + b
}
// 複数戻り値
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("0で割ることはできません")
}
return a / b, nil
}
Goroutine(並列処理)
package main
import (
"fmt"
"sync"
"time"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done()
fmt.Printf("Worker %d 開始\n", id)
time.Sleep(time.Second)
fmt.Printf("Worker %d 完了\n", id)
}
func main() {
var wg sync.WaitGroup
for i := 1; i <= 5; i++ {
wg.Add(1)
go worker(i, &wg) // goroutineで並列実行
}
wg.Wait() // 全goroutineの完了を待つ
fmt.Println("全ワーカー完了")
}
GinでWebAPI作成
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// GETルート
r.GET("/users", func(c *gin.Context) {
users := []gin.H{
{"id": 1, "name": "太郎"},
{"id": 2, "name": "花子"},
}
c.JSON(http.StatusOK, users)
})
// パスパラメータ
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(http.StatusOK, gin.H{"id": id})
})
r.Run(":8080") // localhost:8080で起動
}
Goエンジニアの需要と年収
| 経験年数 | 年収目安 |
|---|---|
| Go経験1〜2年 | 550〜700万円 |
| Go中堅(3〜5年) | 700〜1,000万円 |
| GoシニアエンジニアA | 1,000〜1,500万円 |
まとめ
Goは高パフォーマンス・シンプルな文法・Goroutineによる並列処理が強みの言語です。バックエンド・クラウドインフラ・マイクロサービスで需要が高く、習得するとキャリアの選択肢が大幅に広がります。
📚 プログラミング初心者におすすめの本