"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > انتقل إلى السياق - TODO() مقابل الخلفية() لا مزيد من الإرباك!

انتقل إلى السياق - TODO() مقابل الخلفية() لا مزيد من الإرباك!

تم النشر بتاريخ 2024-11-06
تصفح:843

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

في Go، تساعد حزمة السياق في إدارة القيم ذات نطاق الطلب، وإشارات الإلغاء، والمواعيد النهائية.
هناك طريقتان شائعتان لبدء السياق هما 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.

سياق.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/zakariachahboun/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