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

साझा फ़ील्ड के साथ संरचनाओं पर समान तरीकों को लागू करते समय कोड दोहराव से कैसे बचें?

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

How to Avoid Code Duplication When Implementing Identical Methods on Structs with Shared Fields?

समान क्षेत्रों वाली संरचनाओं में एक सामान्य कार्य का उपयोग करने के लिए सर्वोत्तम अभ्यास

ऐसे परिदृश्यों में जहां दो संरचनाओं में समान क्षेत्र होते हैं, इसे रोकना वांछनीय है उन क्षेत्रों पर काम करने वाली विधियों को परिभाषित करते समय कोड दोहराव।

विधि के रूप में कस्टम प्रकार रिसीवर

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

रचना

एक बार कस्टम प्रकार परिभाषित किया गया है, इसे संरचना का उपयोग करके संरचनाओं में शामिल किया जा सकता है। इसमें structs के भीतर कस्टम प्रकार को एम्बेड करना, अनिवार्य रूप से एक नेस्टेड संरचना बनाना शामिल है। संस्करण स्ट्रिंग टाइप करें func (v संस्करण) PrintVersion() { fmt.Println("संस्करण है", v) } गेम संरचना टाइप करें { नाम स्ट्रिंग मल्टीप्लेयर सपोर्ट बूल शैली स्ट्रिंग संस्करण } ईआरपी संरचना टाइप करें { नाम स्ट्रिंग एमआरपीसपोर्ट बूल समर्थितडेटाबेस []स्ट्रिंग संस्करण }

यहां, संस्करण प्रकार विधि रिसीवर के रूप में कार्य करता है, और इसकी प्रिंटवर्जन विधि को उनके एम्बेडेड संस्करण फ़ील्ड के कारण गेम और ईआरपी संरचनाओं दोनों द्वारा एक्सेस किया जा सकता है।

उपयोग

type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}

मुख्य() { जी := खेल{ "डर का असर", असत्य, "एक्शन एडवेंचर", "1.0.0", } g.PrintVersion() // संस्करण 1.0.0 है ई := ईआरपी{ "प्रतीक चिन्ह", सत्य, []स्ट्रिंग{"ms-sql"}, "2.0.0", } e.PrintVersion() // संस्करण 2.0.0 है }

इस दृष्टिकोण को नियोजित करने से, लचीलेपन और प्रकार की सुरक्षा को बनाए रखते हुए डुप्लिकेट तरीकों से जुड़े कोड दोहराव को समाप्त कर दिया जाता है।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3