Go では、コンテキスト パッケージは、リクエスト スコープの値、キャンセル シグナル、および期限の管理に役立ちます。
コンテキストを開始する 2 つの一般的な方法は、context.TODO() と context.Background() です。
これらは同様に動作しますが、異なる目的を果たします。
context.Background() は、特別な処理 (キャンセルや期限など) が必要ない場合のデフォルトです。
これは、main、init、またはより具体的なコンテキストを必要としない操作を初期化するときによく使用されます。
func main() { ctx := context.Background() server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context { return ctx }} log.Fatal(server.ListenAndServe()) }
この例では、context.Background() を使用して HTTP サーバーの基本コンテキストを確立します。
context.TODO() はプレースホルダーコンテキストです。どのようなコンテキストを提供すればよいかわからない場合、または後でリファクタリングを計画している場合に使用してください。
func processOrder() { ctx := context.TODO() // Placeholder, decision on context pending err := db.SaveOrder(ctx, orderData) if err != nil { log.Println("Failed to save order:", err) } }
ここで、context.TODO() は、より具体的なコンテキストが定義されるまで、データベース操作に一時的に使用されます。
どちらの関数も空のコンテキストを返しますが、異なる意図を表します。
context.Background():
を使用する場合context.TODO():
を使用する場合以上がGo Context — TODO() vs Background() もう混乱する必要はありません。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。