Go vs .NET 技術比較
GoとC#/.NETの設計思想、ランタイム、パフォーマンス、エコシステムの比較
Go入門 - 環境構築とHello World
Goのインストール、go コマンド、エディタ設定、最初のプログラムの作成
モジュールとパッケージ
go.mod、パッケージ、可視性ルール、internalパッケージの理解
Goの基本文法
変数宣言、定数、制御構文、ゼロ値、関数、複数戻り値、defer
型と構造体
struct、型定義、埋め込み、値セマンティクス、class/recordとの違い
メソッドとインターフェース
メソッドレシーバ、暗黙的インターフェース実装、小さなインターフェース設計
Goのエラーハンドリング
error 型、エラーのラップ、errors.Is/As、panic/recover の使いどころ
ポインタとメモリ管理
ポインタ、値渡し、エスケープ解析、GCの基本
スライス・マップ・配列
配列、スライス、マップ、rangeループ、List/Dictionaryとの違い
Goのジェネリクス
型パラメータ、制約、comparable、C#ジェネリクスとの違い
goroutineとチャネル
goroutine、チャネル、select、async/awaitとの考え方の違い
並行処理パターンと同期
sync.WaitGroup、Mutex、errgroup、worker pool、race detector
contextパッケージ
キャンセル、タイムアウト、リクエストスコープ値の伝播
標準ライブラリ概観
fmt、io、encoding/json、time、os など主要な標準パッケージの紹介
Web API開発 (net/http)
net/http、ServeMux、ミドルウェア、chi/gin/echo の選択、ASP.NET Coreとの対応
依存性注入と設定管理
コンストラクタ注入、Wire/fx、環境変数ベースの設定管理
Goのデータアクセス
database/sql、sqlc、GORM、ent、EF Core/Dapperとの対応
Goのテスト
testing パッケージ、テーブル駆動テスト、testify、モック、ベンチマーク
ロギングとオブザーバビリティ
log/slog、構造化ログ、OpenTelemetry、メトリクス
ツールチェーンと静的解析
gofmt、go vet、golangci-lint、go generate などの開発ツール
Goのビルドとデプロイ
シングルバイナリ、クロスコンパイル、Dockerマルチステージビルド、CI/CD
パフォーマンスとプロファイリング
pprof、trace、ベンチマーク、アロケーション削減
プロジェクト構成とアーキテクチャ
標準的なディレクトリ構成、Clean Architecture/Hexagonalの適用方法とGoらしい設計