समान क्षेत्रों वाली संरचनाओं में एक सामान्य कार्य का उपयोग करने के लिए सर्वोत्तम अभ्यास
ऐसे परिदृश्यों में जहां दो संरचनाओं में समान क्षेत्र होते हैं, इसे रोकना वांछनीय है उन क्षेत्रों पर काम करने वाली विधियों को परिभाषित करते समय कोड दोहराव।
विधि के रूप में कस्टम प्रकार रिसीवर
अनुशंसित दृष्टिकोण एक कस्टम प्रकार (उदाहरण के लिए, संस्करण) पेश करना है जो विधि रिसीवर के रूप में कार्य करता है। चूंकि सभी कस्टम प्रकारों को विधि रिसीवर के रूप में उपयोग किया जा सकता है, यह तकनीक एक एकल विधि के निर्माण को सक्षम बनाती है जिसे कई संरचनाओं पर लागू किया जा सकता है।
रचना
एक बार कस्टम प्रकार परिभाषित किया गया है, इसे संरचना का उपयोग करके संरचनाओं में शामिल किया जा सकता है। इसमें 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