context.Context क्यों मौजूद है
रद्दीकरण और अनुरोध के जीवनचक्र का प्रबंधन
context.Context क्यों मौजूद है, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
समस्या
चल रहे कार्य को रद्द करने की व्यवस्था के बिना, धीमी डेटाबेस क्वेरी या HTTP कॉल पूरी होने तक अपनी गो-रूटीन को अवरुद्ध रखती है। मूल अनुरोध पहले ही छोड़ दिया गया हो, तो इससे संसाधन व्यर्थ होते हैं।
context.Context का अवलोकन
context.Context एक इंटरफ़ेस है, जो API सीमाओं और गो-रूटीनों के बीच रद्दीकरण संकेत, वैकल्पिक समय-सीमा और कुंजी-मान मेटाडेटा ले जाता है।
type Context interface {
Deadline() (deadline time.Time, ok bool)
Done() <-chan struct{}
Err() error
Value(key any) any
}Done चैनल
ctx.Done() एक ऐसा चैनल लौटाता है, जो Context के रद्द या समय-सीमा समाप्त होने पर बंद हो जाता है। रद्दीकरण का पता लगाने के लिए गो-रूटीन इस पर select करती हैं।
select {
case result := <-workCh:
return result, nil
case <-ctx.Done():
return nil, ctx.Err()
}context.Background()
context.Background() मूल Context है — यह कभी रद्द नहीं होता, इसकी कोई समय-सीमा नहीं होती और इसमें कोई मान नहीं होते। इसका उपयोग अनुरोध के शीर्ष स्तर पर, main में या परीक्षणों में करें।
context.TODO()
context.TODO() भी रद्द न किया जा सकने वाला मूल Context है। इसका उपयोग तब स्थानधारक के रूप में किया जाता है जब सही Context अभी उपलब्ध न हो। यह समीक्षकों को आपके आशय का संकेत देता है।
Context को पहला तर्क क्यों भेजें?
परंपरा के अनुसार, रद्द किए जा सकने वाले किसी भी फ़ंक्शन का पहला पैरामीटर ctx context.Context होता है। इससे API में रद्दीकरण स्पष्ट और आसानी से खोजने योग्य बनता है।
func FetchUser(ctx context.Context, id int) (*User, error) {
return db.QueryContext(ctx, "SELECT ...", id)
}रद्दीकरण का प्रसार होता है
मूल Context को रद्द करने पर उससे प्राप्त सभी चाइल्ड Context रद्द हो जाते हैं। इससे एक ही रद्दीकरण कॉल गो-रूटीनों और संचालन के पूरे वृक्ष को रोक सकती है।
Context क्या नहीं है
Context सामान्य प्रयोजन के मानों का संग्रह नहीं है — इसका उपयोग केवल अनुरोध-सीमा वाले डेटा, जैसे ट्रेस आईडी या प्रमाणीकरण टोकन, के लिए करें; वैकल्पिक पैरामीटरों के लिए नहीं। मानों को प्रकारित संरचनाओं में रखें।
मानक लाइब्रेरी का एकीकरण
मानक लाइब्रेरी का HTTP क्लाइंट, SQL ड्राइवर, gRPC और कई तृतीय-पक्ष पैकेज Context स्वीकार करते हैं, जिससे पूरे कॉल स्टैक में रद्दीकरण का प्रसार संभव होता है।
संरचना में Context संग्रहीत करना
Context को किसी संरचना के अंदर संग्रहीत न करें। इसे फ़ंक्शन तर्क के रूप में स्पष्ट रूप से भेजें। इसे संग्रहीत करने से रद्दीकरण की अवधि अस्पष्ट हो जाती है और अक्सर बग उत्पन्न होते हैं।
Context अपरिवर्तनीय है
Context अपरिवर्तनीय है — आप WithCancel, WithDeadline, WithTimeout या WithValue से उसे लपेटकर नए Context प्राप्त करते हैं। मूल Context में कोई बदलाव नहीं होता।
त्वरित जाँच
ctx.Done() क्या लौटाता है?
पुनरावलोकन: context.Context
मुख्य बिंदु:
- गो-रूटीनों के बीच रद्दीकरण, समय-सीमा और मेटाडेटा ले जाता है
- इसे पहले तर्क के रूप में भेजें; इसे संरचनाओं में कभी संग्रहीत न करें
- रद्द या समय-सीमा समाप्त होने पर ctx.Done() चैनल बंद हो जाता है
- रद्दीकरण मूल Context से सभी चाइल्ड Context तक फैलता है
एआई शिक्षक के साथ Go सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “context.Context क्यों मौजूद है” पाठ निःशुल्क है?
हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “context.Context क्यों मौजूद है” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“context.Context क्यों मौजूद है” में मैं क्या सीखूँगा?
रद्दीकरण और अनुरोध के जीवनचक्र का प्रबंधन आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“context.Context क्यों मौजूद है” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- context.Context क्यों मौजूद है
- WithCancel और WithTimeout
- WithDeadline और WithValue
- HTTP और डेटाबेस कॉल में Context