基礎知識
開始前に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 | ウォッチドッグタイマーを使ったハートビート監視 |