概要 go 1.7からcontextパッケージが標準パッケージになりました。 タイムアウト、キャンセルなどのハンドリングができることから、ブロッキングする処理や外部APIリクエストなどを扱う時は基本的に第一引数に置くべきです。 またAPIやプロセス間通信のリクエストスコープの値を引き継がせる際にも利用されます。 例えばgoogleはAPIを叩くコードでは全ての関数にcontextが引数に存在します。 github.com ブログでもこのように言っています。 At Google, we require that Go programmers pass a Context parameter as the first argument to every function on the call path between incoming and outgoing requests. ref: