「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go Context — TODO() vs Background() もう混乱する必要はありません。

Go Context — TODO() vs Background() もう混乱する必要はありません。

2024 年 11 月 6 日に公開
ブラウズ:850

Go Context — TODO() vs Background() No more confusing!

Go では、コンテキスト パッケージは、リクエスト スコープの値、キャンセル シグナル、期限の管理に役立ちます。
コンテキストを開始する 2 つの一般的な方法は、context.TODO() と context.Background() です。
これらは同様に動作しますが、異なる目的を果たします。

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()

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(): 将来の変更を通知する一時的なプレースホルダー コンテキスト。

結論

context.Background():

を使用する場合
  • HTTP サーバーやデータベース接続などのコア サービスを初期化するとき。
  • キャンセル、期限、金額の必要がない場合。

context.TODO():

を使用する場合
  • リファクタリングするとき、コンテキストがまだ決まっていません。
  • 将来の改善が必要な初期段階のコードを実装する場合。
リリースステートメント この記事は次の場所に転載されています: https://dev.to/zariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2h46?1 侵害がある場合、study_golang @163.comdelete までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3