GoのHTTPサーバーのグレースフルシャットダウン
signal.NotifyContextとhttp.Server.Shutdownを使用してGoのHTTPサーバーを安全に終了します。タイムアウト、WebSocket、補助リソース、Kubernetesへの対応を解説。
signal.NotifyContextとhttp.Server.Shutdownを使用してGoのHTTPサーバーを安全に終了します。タイムアウト、WebSocket、補助リソース、Kubernetesへの対応を解説。
Goのencoding/jsonの使い方ガイド。Marshal/Unmarshal、構造体タグ、Encoder/Decoder、カスタム型まで、テストと一般的なエラーを含めて解説します。
GoでchanelネットとSync.WaitGroup、context、errgroupを使ってworker poolを構築し、並行処理に制限を設け、キャンセル可能にし、テスト可能にする方法。
Go には継承がありません。本記事では、構造体埋め込みの仕組み、メソッドの「昇格」、メソッドオーバーライドの落とし穴、そして埋め込みとインターフェースの組み合わせについて説明します。
Go の defer、panic、recover メカニズムを理解する。よくある落とし穴とエラーを返すべき時期。
pprof を使用して Go アプリケーションで CPU、heap、goroutine、block、mutex プロファイルを収集・読解する方法ガイド。HTTP サービスからベンチマークまで。
GoのMapがどう動作するか、なぜ「concurrent map writes」でクラッシュするのか、そしてsync.Mutex、sync.RWMutex、sync.Mapで修正する方法を学びます。
sliceが背後にある配列を共有する仕組み、lenとcapの役割、appendの使用時にデータが意図せず上書きされるバグを回避する方法を理解します。
Go modulesを使用してプロジェクトを初期化し、依存関係を追加・アップグレードし、メジャーバージョン、replace、go.work、プライベートモジュールを処理するためのガイド。
Go でのtable-driven testの書き方。slice struct、t.Run、エラーチェック、並列実行、go-cmpによるstruct比較、よくある落とし穴を含む。
sync.WaitGroupでゴルーチン待機、sync.Mutexでデータレース防止、errgroupでエラー集約、contextキャンセル、ゴルーチン数制限
type parameter、constraint、~記号、Goのジェネリック型をOrder、Customer、Stack、Cacheの例で学びます。
Go 1.22のServeMuxを使ってmethod、path parameterを読む方法、JSONを返すREST API。サードパーティのrouterなしで完全なREST APIが作れます。
Go のインターフェースは暗黙的に満たされます。この記事では、インターフェースを小さく保つ方法、使用する側で宣言する方法、フェイクでテストする方法、および nil インターフェースの問題を回避する方法について説明します。
%wでエラーをwrapする方法、errors.Isでwrapチェーン経由でエラーをチェック、errors.Asでカスタムエラーを取得、errors.Joinでエラーをマージする方法、よくあるエラーについて
Goのcontext.Contextを使ってtimeout、deadline、goroutineのキャンセル、request-scopedな値の送信を安全に制御する方法を学びます。
Go の goroutine と channel を通じた concurrency 処理方法を、基本から WaitGroup、select、context などの実践的なパターンまで学びます。