एंबेडिंग संरचनाएं: पॉइंटर्स को कब प्राथमिकता दें
एक संरचना को दूसरे में एम्बेड करते समय, दो विकल्प होते हैं: एक पॉइंटर या एक एम्बेडेड मान का उपयोग करना . इस निर्णय का मार्गदर्शन करने के लिए, विशिष्टताओं को समझना और प्रत्येक दृष्टिकोण के लाभों पर विचार करना महत्वपूर्ण है।
पॉइंटर्स बनाम एंबेडेड वैल्यूज़
गो विनिर्देश के अनुसार, एक अनाम फ़ील्ड (एम्बेडेड फ़ील्ड के रूप में भी जाना जाता है) को एक प्रकार के नाम के रूप में या गैर-इंटरफ़ेस प्रकार के नाम के सूचक के रूप में घोषित किया जा सकता है। इसका मतलब है कि आपके पास निम्न उदाहरण में लॉगर फ़ील्ड के लिए टाइप लॉग.लॉगर या पॉइंटर *लॉग.लॉगर का उपयोग करने का विकल्प है:
type Job struct {
Command string
*log.Logger
}
पॉइंटर्स के लाभ
एरिक अर्बन का लेख "एम्बेडिंग इन गो" एक पॉइंटर को एम्बेड करने के फायदों पर प्रकाश डालता है, जिसे "एम्बेड बाय-पॉइंटर" कहा जाता है ।" इनमें शामिल हैं:
पॉइंटर एंबेडिंग का उदाहरण
type Bitmap struct{
data [4][5]bool
}
type Renderer struct{
*Bitmap //Embed by pointer
on uint8
off uint8
}
इस उदाहरण में, रेंडरर प्रकार पॉइंटर द्वारा बिटमैप को एम्बेड करता है। इसका मतलब है कि रेंडरर के कई उदाहरण बिटमैप के एक उदाहरण को साझा कर सकते हैं और अपने व्यवहार को स्वतंत्र रूप से अनुकूलित कर सकते हैं। या अनाम फ़ील्ड के रूप में इंटरफ़ेस के संकेतक। यह प्रतिबंध इस तथ्य से उत्पन्न होता है कि इन प्रकारों में विधियाँ नहीं होती हैं, जो एम्बेडिंग का एक प्रमुख पहलू है। विधियों को एम्बेडेड प्रकार से एम्बेडिंग प्रकार में प्रचारित किया जाता है, जिससे आप उन तक सीधे पहुंच सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3