क्या उपनामों के बीच असाइन करने से गो में नकल शुरू हो जाती है?
गो उपनामों का उपयोग करके कस्टम प्रकारों की परिभाषा की अनुमति देता है। इस बात को लेकर चिंताएँ उत्पन्न होती हैं कि क्या इन उपनाम प्रकारों के बीच रूपांतरण के परिणामस्वरूप प्रतिलिपियाँ बनती हैं या केवल संरचनात्मक परिवर्तन होते हैं।
इस उदाहरण पर विचार करें:
type MyString string var s = "very long string" var ms = MyString(s) var s2 = string(s) // Are ms or s2 a full copy of s?प्रतियाँ बनाए बिना मूल प्रतिनिधित्व को संरक्षित करते हैं
।इसलिए, एमएस और एस2 दोनों एस की पूर्ण प्रतियां नहीं हैं, लेकिन समान अंतर्निहित मूल्य का संदर्भ देते हैं .
फ़ंक्शन कॉल पर प्रभाव:
फ़ंक्शन में मान पास करते समय, प्रतियां आम तौर पर होती हैं बनाया था। हालाँकि, यह उपनाम प्रकारों के लिए सही नहीं है। किसी फ़ंक्शन पैरामीटर के लिए उपनाम-टाइप किया गया मान निर्दिष्ट करने से प्रतिलिपि बनाना ट्रिगर नहीं होता है:
func foo(s MyString){ ... } foo(ms) // ms को foo() में पास करने पर कोई प्रतिलिपि नहीं बनाई जाती है। संक्षेप में, जबकि उपनाम प्रकारों के बीच रूपांतरण अंतर्निहित मूल्य की प्रतियां नहीं बनाते हैं, यह सिद्धांत कार्यों में मानों को पारित करने तक विस्तारित नहीं होता है जहां आम तौर पर प्रतियां बनाई जाती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3