よろしくどーぞ。@knwoop です この記事はGo Advent Calendar 2021の22日目の記事です。 この記事は Context をコピーするため Tips を紹介します。 ちょっと特殊なのは、Context にすでにセットされている timeout を無視して value のみを引き継ぐ方法を紹介したいと思います。 主なユースケース 複数の API に対して跨ぐ原子性を持つリクエストするケースがあるとします。以下の様なコードAPI2 がリクエスト失敗したときに API1 に Rollback します。 if err := api1.Request(ctx); err != nil { return fmt.Errorf("error api1 Request: %w", err) } if err := api2.Request(ctx); err != nil { if