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()) }
この例では、HTTP サーバーの基本コンテキストを確立するために context.Background() が使用されます。
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():
を使用する場合免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3