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

जब तक मैं पॉइंटर रिसीवर का उपयोग नहीं करता, तब तक मेरा जीओ विधि इंस्टेंस वैल्यू को संशोधित नहीं करती है?

2025-02-06 पर पोस्ट किया गया
ब्राउज़ करें:183

रिसीवर। इस उदाहरण में, सेट्सोमफील्ड विधि अपेक्षित रूप से काम नहीं कर रही है क्योंकि इसका रिसीवर पॉइंटर प्रकार का नहीं है। Why Doesn't My Go Method Modify the Instance Value Unless I Use a Pointer Receiver?

इसे ठीक करने के लिए, हम एक पॉइंटर रिसीवर को स्वीकार करने के लिए सेटसोमफील्ड विधि को संशोधित करते हैं:

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