एम्बेडिंग स्ट्रक्चर्स इन गो: कब एक पॉइंटर का उपयोग करें
एक संरचना को दूसरे के भीतर एम्बेड करने पर विचार करते समय, एक पॉइंटर का उपयोग करने का निर्णय या एम्बेडेड फ़ील्ड के लिए एक मान उत्पन्न होता है। यह आलेख इस कार्यान्वयन विकल्प की बारीकियों की पड़ताल करता है और संभावित लाभों और निहितार्थों को चित्रित करने के लिए उदाहरण प्रदान करता है। या मूल्य. गैर-इंटरफ़ेस प्रकारों के लिए, एक अज्ञात फ़ील्ड को एक प्रकार के नाम T या एक गैर-इंटरफ़ेस प्रकार के नाम *T के लिए एक सूचक के रूप में निर्दिष्ट करना स्वीकार्य है।
पॉइंटर द्वारा एम्बेडिंग के लाभ:
यह दृष्टिकोण उन कार्यों पर भरोसा करने की अनुमति देता है जो आरंभीकरण उद्देश्यों के लिए पॉइंटर द्वारा संरचनाएं लौटाते हैं।विस्तारित किए जा रहे उदाहरण को गतिशील रूप से बदलना संभव है। यह सुविधा फ्लाईवेट पैटर्न को लागू करने में विशेष रूप से उपयोगी है, जहां कई उदाहरण समान अंतर्निहित डेटा संरचना साझा करते हैं। वैल्यू इन्स्टेन्शियेशन ज्ञान की आवश्यकता के बिना अपनी सभी कार्यक्षमताओं को एम्बेड करता है। यह संलग्न संरचना में एम्बेडेड संरचना के तरीकों को प्रभावी ढंग से बढ़ावा देता है।
इस उदाहरण में, जॉब स्ट्रक्चर एक पॉइंटर को log.Logger प्रकार में एम्बेड करता है। यह दृष्टिकोण विभिन्न लॉगर उदाहरणों के गतिशील असाइनमेंट की अनुमति देते हुए जॉब स्ट्रक्चर को लॉगर विधियों तक पहुंचने में सक्षम बनाता है।
टाइप जॉब स्ट्रक्चर { कमांड स्ट्रिंग लॉग.लॉगर }यहां, जॉब संरचना सीधे लॉग.लॉगर प्रकार को एक मान के रूप में एम्बेड करती है। प्रचारित लॉगर विधियों को अब सीधे जॉब स्ट्रक्चर से एक्सेस किया जा सकता है।निष्कर्ष
type Job struct {
Command string
*log.Logger
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3