基礎知識
開始前にVSCodeの環境設定を再度確認(筆者がつまずいた為、補足記載)
| トピック | 学習内容 |
|---|---|
| module・package | Go モジュール管理、パッケージの作成と利用 |
| variables | 変数の宣言、型、スコープ、値の代入 |
| pointer・shadowing | ポインタの仕組み、値渡しと参照渡し 変数のシャドーイング |
| slice・map | スライスとマップの基本操作、動的配列、キー・バリューストア |
| struct・receiver | 構造体の定義、メソッドレシーバによる操作 |
| function・closure | 関数の定義、クロージャの仕組みと活用 |
| interface | インターフェースの定義とポリモーフィズムの活用 |
| if・for・switch | 制御構造(条件分岐・ループ) |
| errors | エラーハンドリング、カスタムエラーの作成 |
| generics | ジェネリクスの活用、型パラメータの利用 |
| unit test(table driven, coverage) | テストの書き方、テーブル駆動テスト、カバレッジ測定 |
| logger | ログ出力の方法、標準ライブラリ log の活用 |
並行処理
| トピック | 学習内容 |
|---|---|
| runtime scheduler | Go のランタイムスケジューラの仕組み |
| goroutine: tracer + syncGroup | goroutine のトレースと sync.WaitGroup による並行処理管理 |
| channel: unbuffer + buffered + goroutine leak (goleak) | バッファなし/ありのチャンネルの使い方、ゴルーチンリークの検出 |
| channel: closed, capsel, notification | チャンネルのクローズ、キャパシティ管理、通知の仕組み |
| select: with timeout context | select 文を使ったタイムアウト処理 |
| select: default case | select のデフォルトケースの活用 |
| select: receive continuous data | select を使った連続データ受信の処理 |
| mutex + atomic | sync.Mutex や sync/atomic を利用した排他制御 |
| context: cancel + timeout + deadline | context パッケージを使ったゴルーチンのキャンセル・タイムアウト処理 |
| errGroup | errgroup を利用した並行処理のエラーハンドリング |
| pipeline | パイプライン処理によるデータのストリーミング |
| fan-out fan-in | ワーカーを使った並列処理(ファンアウト・ファンイン) |
| heartbeat with watchdog timer | ウォッチドッグタイマーを使ったハートビート監視 |