रिसीवर। इस उदाहरण में, सेट्सोमफील्ड विधि अपेक्षित रूप से काम नहीं कर रही है क्योंकि इसका रिसीवर पॉइंटर प्रकार का नहीं है।
func (i *कार्यान्वयन) setsomefield (newvalue string) { ... }
हालांकि, यह परिवर्तन एक नई समस्या का परिचय देता है: संरचना अब इंटरफ़ेस को लागू नहीं करती है क्योंकि GetSomeField विधि में अभी भी एक मान रिसीवर है। इंटरफ़ेस को लागू करना। ऐसा करने से, हम एक प्रति बनाए बिना वास्तविक उदाहरण को संशोधित करने के लिए विधि को सक्षम करते हैं। यहाँ संशोधित कोड है:iface इंटरफ़ेस टाइप करें { Setsomefield (newvalue string) Getsomefield () स्ट्रिंग } प्रकार के कार्यान्वयन संरचना { कुछ क्षेत्र स्ट्रिंग } func (i *कार्यान्वयन) getsomefield () स्ट्रिंग { लौटा Isomefield } func (i *कार्यान्वयन) setsomefield (newvalue string) { i.somefield = newvalue } func create () *कार्यान्वयन { वापसी और कार्यान्वयन {कुछ क्षेत्र: "हैलो"} } func मुख्य () { var a iface a = create () A.Setsomefield ("दुनिया") fmt.println (A.getSomeField ()) }
इस अद्यतन कोड में, क्रिएट फ़ंक्शन कार्यान्वयन संरचना के लिए एक पॉइंटर लौटाता है, जो IFACE इंटरफ़ेस को लागू करता है। नतीजतन, IFACE प्रकार का एक चर कार्यान्वयन संरचना के लिए सूचक को संदर्भित कर सकता है, जिससे सेटसोमफील्ड विधि को इसके मूल्य को संशोधित करने की अनुमति मिलती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3