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

गो में एकाधिक इंटरफेस और कंक्रीट प्रकारों को प्रभावी ढंग से कैसे संभालें?

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

How to Effectively Handle Multiple Interfaces and Concrete Types in Go?

गो में इंटरफेस को संभालना

गो इंटरफेस अमूर्तता के लिए एक शक्तिशाली तंत्र प्रदान करता है। हालाँकि, कई इंटरफेस और ठोस प्रकारों से निपटने के दौरान उनका उपयोग कुछ चुनौतियाँ पैदा कर सकता है।

गो इंटरफेस को समझना

सी और जावा जैसी भाषाओं के विपरीत, गो प्रत्यक्ष का समर्थन नहीं करता है वर्ग विरासत. इसके बजाय, इंटरफ़ेस बहुरूपता के एक रूप के रूप में कार्य करता है जो असंबंधित प्रकारों को विधियों के समान सेट को लागू करने की अनुमति देता है। वे किसी भी अंतर्निहित कार्यान्वयन विवरण को परिभाषित नहीं करते हैं। )") आपके "कार्ड" इंटरफ़ेस के उदाहरण के लिए विधि। ऐसा इसलिए है क्योंकि इंटरफ़ेस स्वयं उस पद्धति को परिभाषित नहीं करता है।

इंटरफ़ेस डिज़ाइन के लिए सर्वोत्तम अभ्यास

इस समस्या का समाधान करने और अपने इंटरफ़ेस डिज़ाइन को अनुकूलित करने के लिए, निम्नलिखित पर विचार करें:

कार्यान्वयन को छिपाने से बचें:

हालांकि आप शुरुआत में इनकैप्सुलेशन को लागू करने के लिए अपने संरचना प्रकार को छिपाना चाह सकते हैं, गो के अनएक्सपोर्टेड ("लोअरकेस") स्ट्रक्चर फ़ील्ड पहले से ही आंतरिक डेटा के प्रत्यक्ष हेरफेर को रोकते हैं।

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

    वैकल्पिक दृष्टिकोण
    • दोनों "कार्ड" एपीआई को परिभाषित करने के लिए एक इंटरफ़ेस का उपयोग करने के बजाय और स्ट्रिंग रूपांतरण, एम्बेडिंग का उपयोग करने पर विचार करें:
    • प्रकार कार्ड संरचना { कार्डनम इंट फेस स्ट्रिंग सूट की डोरी } // कार्ड के गेम-संबंधित व्यवहार के लिए इंटरफ़ेस गेमकार्ड इंटरफ़ेस टाइप करें { GetFace() स्ट्रिंग GetSuit() स्ट्रिंग } // स्ट्रिंग रूपांतरण के लिए एंबेडेड इंटरफ़ेस स्ट्रिंगर इंटरफ़ेस टाइप करें { स्ट्रिंग() स्ट्रिंग } // कार्ड प्रकार पर दोनों इंटरफेस लागू करें func (c *कार्ड) GetFace() स्ट्रिंग { वापसी सी.चेहरा } func (c *कार्ड) GetSuit() स्ट्रिंग { वापसी सी.सूट } func (सी *कार्ड) स्ट्रिंग() स्ट्रिंग { वापसी fmt.Sprintf("%s%s ", c.GetFace(), c.GetSuit()) } // उपयोग: func मुख्य() { // एक कार्ड इंस्टेंस बनाएं और उसके तरीकों तक पहुंचें कार्ड := कार्ड{कार्डनम: 0} fmt.Println(card.GetFace()) fmt.Println(card.GetSuit()) fmt.Println(कार्ड.स्ट्रिंग()) }
  • यह दृष्टिकोण आपको विभिन्न चिंताओं (गेम लॉजिक और स्ट्रिंग रूपांतरण) के लिए अलग-अलग इंटरफेस परिभाषित करने और उन्हें एक ही संरचना पर लागू करने की अनुमति देता है।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3