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

क्या आप संरचनाओं को एम्बेड किए बिना विधि विरासत प्राप्त कर सकते हैं?

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

Can You Achieve Method Inheritance in Go Without Embedding Structs?

एम्बेडेड स्ट्रक्चर्स: एन एक्सप्लोरेशन ऑफ़ मेथड इनहेरिटेंस

अंडरस्टैंडिंग मेथड इनहेरिटेंस इन गो

इन जाओ, एक प्रकार से दूसरे प्रकार में विधियों को इनहेरिट करने की क्षमता मुख्य रूप से एम्बेडेड संरचनाओं के माध्यम से प्राप्त की जाती है। इस तकनीक में एक संरचना को दूसरे के भीतर एम्बेड करना शामिल है, जिससे बाहरी संरचना को एम्बेडेड संरचना के तरीकों तक पहुंचने और उपयोग करने की इजाजत मिलती है। कोड स्निपेट:

प्रकार गुण मानचित्र[स्ट्रिंग]इंटरफ़ेस{} func (p गुण) GetString(कुंजी स्ट्रिंग) स्ट्रिंग { वापसी पी[कुंजी].(स्ट्रिंग) } नोड्स मैप टाइप करें[स्ट्रिंग]*नोड नोड संरचना टाइप करें { *गुण }

इस उदाहरण में, नोड संरचना एक समग्र डेटा संरचना बनाते हुए, प्रॉपर्टीज संरचना को एम्बेड करती है। गुण संरचना GetString नामक एक विधि को परिभाषित करती है जो किसी दिए गए कुंजी से जुड़ा एक स्ट्रिंग मान लौटाती है। चूंकि नोड संरचना प्रॉपर्टी संरचना को एम्बेड करती है, यह स्पष्ट प्रतिनिधिमंडल की आवश्यकता के बिना गेटस्ट्रिंग विधि तक सीधे पहुंच और उपयोग कर सकती है। तरीकों को इनहेरिट करने का एक प्रभावी तरीका है, इसकी कुछ सीमाएँ भी हैं। एक प्रमुख सीमा यह है कि बाहरी संरचना का उदाहरण बनाते समय एम्बेडेड संरचना के फ़ील्ड को स्पष्ट रूप से प्रारंभ किया जाना चाहिए। इससे जटिल डेटा संरचनाओं के साथ काम करते समय, विशेष रूप से जटिल डेटा संरचनाओं के साथ काम करते समय, वर्बोज़ और दोहराव वाले कोड हो सकते हैं। विरासत। प्रस्तावित समाधान में नोड संरचना को सीधे गुण संरचना प्रकार निर्दिष्ट करना शामिल है, जिससे एम्बेडेड संरचना के स्पष्ट आरंभीकरण की आवश्यकता समाप्त हो जाती है।

type Properties map[string]interface{}

func (p Properties) GetString(key string) string {
    return p[key].(string)
}

type Nodes map[string]*Node

type Node struct {
    *Properties
}

वैकल्पिक दृष्टिकोण की सीमाएं

दुर्भाग्य से, यह दृष्टिकोण गो में संभव नहीं है क्योंकि भाषा संरचनाओं को एम्बेड किए बिना प्रत्यक्ष विधि विरासत की अवधारणा का समर्थन नहीं करती है . गो विनिर्देश स्पष्ट रूप से बताता है कि विधियों को केवल विशिष्ट रिसीवर प्रकारों के लिए घोषित किया जा सकता है, और रिसीवर प्रकार को विरासत द्वारा संशोधित नहीं किया जा सकता है।

निष्कर्ष

गो में, एम्बेडिंग संरचनाएं विधि वंशानुक्रम के लिए प्राथमिक तंत्र बना हुआ है। हालाँकि इसकी कुछ सीमाएँ हैं, यह साझा कार्यक्षमता के साथ समग्र डेटा संरचनाएँ बनाने का एक मजबूत और कुशल तरीका प्रदान करता है। वैकल्पिक दृष्टिकोण जो एम्बेडेड संरचनाओं से बचने का प्रयास करते हैं, उन्हें सीमाओं का सामना करना पड़ सकता है और भाषा विनिर्देश द्वारा समर्थित नहीं हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3