𝗚𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗮𝗰𝗸𝗮𝗴𝗲

زیادہ تر Go ڈویلپرز context.Context کو سمجھے بغیر استعمال کرتے ہیں۔ آپ اسے HTTP ہینڈلرز، ڈیٹا بیس کالز، اور SDK میتھڈز میں دیکھتے ہیں۔ بہت سے مبتدی ہر جگہ context.Background() پاس کر دیتے ہیں۔

یہ غلطی مسائل کا باعث بنتی ہے۔ ایک Lambda فنکشن اپنے ٹائم آؤٹ سے آگے بھی ہینگ ہو سکتا ہے۔ ایک ڈیٹا بیس کوئری صارف کے ڈس کنیکٹ ہونے کے بعد بھی چلتی رہ سکتی ہے۔

Context آپ کو اپنے کوڈ کے ذریعے کینسلشن سگنلز اور ڈیڈ لائنز بھیجنے کی اجازت دیتا ہے۔ یہ آپ کو تین سوالات کے جواب دینے میں مدد کرتا ہے:

• کیا یہ آپریشن چلتا رہنا چاہیے؟ • اس آپریشن کو کب ختم ہونا چاہیے؟ • اس کال کے ساتھ کون سا ریکوسٹ ڈیٹا بہہ رہا ہے؟

Context انٹرفیس کے چار میتھڈز ہیں:

Context ایک درخت (tree) کے طور پر کام کرتا ہے۔ آپ ایک پیرنٹ context سے شروع کرتے ہیں اور اس کے چائلڈز بناتے ہیں۔

Root Contexts:

Child Contexts:

اہم اصول: ہمیشہ cancel فنکشن کو کال کریں۔ چائلڈ context بنانے کے فوراً بعد defer cancel() استعمال کریں۔ اگر آپ اسے چھوڑ دیتے ہیں، تو آپ میموری لیکس (memory leaks) پیدا کر دیتے ہیں۔

Best Practices:

جب ایک پیرنٹ context کینسل ہوتا ہے، تو اس کے تمام چائلڈز خود بخود کینسل ہو جاتے ہیں۔ یہ آپ کے پورے سسٹم میں آپریشنز کی ایک پوری زنجیر کو روکنا آسان بنا دیتا ہے۔

Source: https://dev.to/ferztyle/go-context-package-37nk