概要 contextパッケージは、生成したgoroutineの実行をキャンセルし、リソースを解放するための仕組みを提供しています。また、リクエストスコープの値を保持させることもできます。 ここでは、contextパッケージのソースコードから、どのようにgoroutineの実行がキャンセルされるかを見ていきます。 具体的には、基本的な以下のような使い方をした場合に何が行われているのかを確認していきます。 import ( "context" "fmt" "sync" ) func main() { var wg sync.WaitGroup wg.Add(1) ctx, cancel := context.WithCancel(context.Background()) go func(ctx context.Context) { select { case <-ctx.Done(): fm