# Functions
AfterFunc ctxが完了(キャンセルまたはタイムアウト)した後、fを独自のゴルーチンで呼び出すように設定します。 もしctxが既に完了している場合、AfterFuncは独自のゴルーチンで直ちにfを呼び出します。
ContextでのAfterFuncの複数回の呼び出しは独立して動作し、1つが他を置き換えることはありません。
返されたstop関数を呼び出すと、ctxとfの関連付けが停止します。 呼び出しがfの実行を停止した場合、trueを返します。 stopがfalseを返す場合、 コンテキストが完了し、fが独自のゴルーチンで開始されたか、 またはfが既に停止されています。 stop関数は、fが完了するのを待ってから戻りません。 呼び出し元がfが完了したかどうかを知る必要がある場合、 明示的にfと調整する必要があります。
ctxに「AfterFunc(func()) func() bool」メソッドがある場合、 AfterFuncはそれを使用して呼び出しをスケジュールします。.
Backgroundは、非nilで空の [Context] を返します。キャンセルされることはなく、値も期限もありません。 通常、main関数、初期化、テスト、および着信リクエストのトップレベルContextとして使用されます。.
Causeは、cがキャンセルされた理由を説明する非nilのエラーを返します。 cまたはその親の最初のキャンセルは原因を設定します。 そのキャンセルがCancelCauseFunc(err)の呼び出しによって行われた場合、 [Cause] はerrを返します。 そうでない場合、Cause(c)はc.Err()と同じ値を返します。 cがまだキャンセルされていない場合、Causeはnilを返します。.
TODO 非nilで空の [Context] を返します。 コードがどの [Context] を使用するか不明である場合や、まだ [Context] パラメータを受け入れるように拡張されていない (周囲の関数がまだ [Context] を受け入れるように拡張されていない)場合に、コードは [context.TODO] を使用する必要があります。.
WithCancel 新しいDoneチャネルを持つ親のコピーを返します。 返されたコンテキストのDoneチャネルは、返されたキャンセル関数が呼び出されるか、 または親のコンテキストのDoneチャネルが閉じられたとき、より早く閉じられます。
このコンテキストをキャンセルすると、それに関連するリソースが解放されるため、コードはこの [Context] で実行される操作が完了したらすぐにcancelを呼び出す必要があります。.
WithCancelCause [WithCancel] と同様に動作しますが、 [CancelFunc] の代わりに [CancelCauseFunc] を返します。 エラー(「原因」と呼ばれる)を非nilで渡すと、そのエラーがctxに記録されます。 その後、[Cause] を使用して取得できます。 nilでキャンセルすると、原因は [Canceled] に設定されます。
使用例:
ctx、cancel := context.WithCancelCause(parent) cancel(myError) ctx.Err() // context.Canceledを返します context.Cause(ctx) // myErrorを返します.
WithDeadlineは、親の期限をdよりも遅くならないように調整した親のコピーを返します。 親の期限がすでにdよりも早い場合、 WithDeadline(parent, d) は親と意味的に等価です。 返された [Context.Done] チャネルは、期限が切れたとき、返されたキャンセル関数が呼び出されたとき、または親のコンテキストのDoneチャネルが閉じられたときのいずれかが最初に発生したときに閉じられます。
このコンテキストをキャンセルすると、それに関連するリソースが解放されるため、コードはこの [Context] で実行される操作が完了したらすぐにcancelを呼び出す必要があります。.
WithDeadlineCause [WithDeadline] と同様に動作しますが、期限が切れたときに返された [Context] の原因も設定します。 返された [CancelFunc] は原因を設定しません。.
WithoutCancelは、親がキャンセルされたときにキャンセルされない親のコピーを返します。 返されたコンテキストは、DeadlineやErrを返さず、Doneチャネルはnilです。 返されたコンテキストで [Cause] を呼び出すとnilが返されます。.
WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
WithTimeoutCause [WithTimeout]と同様に動作しますが、タイムアウトが切れたときに返された [Context] の原因も設定します。 返された [CancelFunc] は原因を設定しません。.
WithValueは、キーに関連付けられた値がvalである親のコピーを返します。
コンテキストの値は、プロセスやAPIを超えて転送されるリクエストスコープのデータにのみ使用し、関数にオプションのパラメータを渡すために使用しないでください。
提供されたキーは比較可能である必要があり、衝突を避けるためにstringまたは他の組み込み型であってはなりません。 WithValueを使用するユーザーは、キーのために独自の型を定義する必要があります。 interface{} に代入するときのアロケーションを避けるために、コンテキストキーは通常、具体的な型 struct{} を持ちます。 代替案として、エクスポートされたコンテキストキー変数の静的型はポインタまたはインターフェースである必要があります。.
# Variables
Canceled コンテキストがキャンセルされた場合に [Context.Err] が返すエラーです。.
DeadlineExceeded コンテキストの期限が切れた場合に [Context.Err] が返すエラーです。.
# Interfaces
Context は、期限、キャンセルシグナル、および他の値をAPI境界を超えて伝達します。
Contextのメソッドは、複数のゴルーチンから同時に呼び出すことができます。.
# Type aliases
CancelCauseFunc [CancelFunc]と同様に動作しますが、キャンセルの原因を設定します。 この原因は、キャンセルされたContextまたはその派生Contextのいずれかで [Cause] を呼び出すことで取得できます。
コンテキストが既にキャンセルされている場合、 [CancelCauseFunc] は原因を設定しません。 たとえば、childContextがparentContextから派生している場合: - childContextがcause2でキャンセルされる前に、parentContextがcause1でキャンセルされた場合、 その後、Cause(parentContext) == Cause(childContext) == cause1 - parentContextがcause1でキャンセルされる前に、childContextがcause2でキャンセルされた場合、 その後、Cause(parentContext) == cause1 および Cause(childContext) == cause2.
CancelFunc 操作がその作業を中止するように指示します。 CancelFuncは、作業が停止するのを待ちません。 CancelFuncは、複数のゴルーチンから同時に呼び出すことができます。 最初の呼び出しの後、CancelFuncへの後続の呼び出しは何もしません。.