"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में स्ट्रक्चर्स को एंबेड करते समय: पॉइंटर्स या एंबेडेड मान?

गो में स्ट्रक्चर्स को एंबेड करते समय: पॉइंटर्स या एंबेडेड मान?

2024-11-15 को प्रकाशित
ब्राउज़ करें:976

When Embedding Structs in Go: Pointers or Embedded Values?

एंबेडिंग संरचनाएं: पॉइंटर्स को कब प्राथमिकता दें

एक संरचना को दूसरे में एम्बेड करते समय, दो विकल्प होते हैं: एक पॉइंटर या एक एम्बेडेड मान का उपयोग करना . इस निर्णय का मार्गदर्शन करने के लिए, विशिष्टताओं को समझना और प्रत्येक दृष्टिकोण के लाभों पर विचार करना महत्वपूर्ण है।

पॉइंटर्स बनाम एंबेडेड वैल्यूज़

गो विनिर्देश के अनुसार, एक अनाम फ़ील्ड (एम्बेडेड फ़ील्ड के रूप में भी जाना जाता है) को एक प्रकार के नाम के रूप में या गैर-इंटरफ़ेस प्रकार के नाम के सूचक के रूप में घोषित किया जा सकता है। इसका मतलब है कि आपके पास निम्न उदाहरण में लॉगर फ़ील्ड के लिए टाइप लॉग.लॉगर या पॉइंटर *लॉग.लॉगर का उपयोग करने का विकल्प है:

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