गो में मल्टीपल वैल्यू लौटाने का प्रयास करते समय, यह भ्रमित करने वाला लग सकता है कि क्यों कुछ सिंटैक्स मान्य हैं जबकि अन्य नहीं हैं। इसे स्पष्ट करने के लिए, निम्नलिखित दो कोड स्निपेट पर विचार करें:
func FindUserInfo(id string) (Info, bool) { it, present := all[id] return it, present }
पहला कोड स्निपेट मान्य है और जानकारी और बूल दोनों मान लौटाता है। हालाँकि, दूसरा स्निपेट अमान्य है:
func FindUserInfo(id string) (Info, bool) { return all[id] }
इससे यह सवाल उठता है कि पहला स्निपेट वैध क्यों है और दूसरा क्यों नहीं। इसके अतिरिक्त, किसी को आश्चर्य हो सकता है कि क्या इस और वर्तमान जैसे अस्थायी चर का उपयोग करने से बचने का कोई तरीका है।
इस व्यवहार को समझने की कुंजी "अल्पविराम" में निहित है ठीक है" पैटर्न। गो में, मानचित्र तक पहुंचने पर, परिणाम मानों की एक जोड़ी होती है: कुंजी और एक बूलियन से जुड़ा मान यह दर्शाता है कि मानचित्र में कुंजी मौजूद है या नहीं। इसका उपयोग अक्सर गायब कुंजी और शून्य मान के बीच अंतर करने के लिए किया जाता है।
पहले कोड स्निपेट में, सभी[आईडी] अभिव्यक्ति मानों की एक जोड़ी लौटाती है, जो इसे सौंपी जाती है और प्रस्तुत की जाती है। रिटर्न स्टेटमेंट फिर इन मानों को लौटाता है।
कंपाइलर यह निर्धारित करने में भूमिका निभाता है कि एक बहु-मूल्य असाइनमेंट वैध है या नहीं। यदि फ़ंक्शन एकाधिक मान लौटाता है लेकिन बाईं ओर प्राप्तकर्ता के पास केवल एक चर है, तो कंपाइलर एक त्रुटि जारी करेगा। ऐसा इसलिए है क्योंकि कंपाइलर को उम्मीद है कि लौटाए गए मानों की संख्या उन्हें प्राप्त होने वाले वेरिएबल्स की संख्या से मेल खाएगी।
दूसरे कोड स्निपेट के मामले में, रिटर्न ऑल[आईडी] एक्सप्रेशन केवल एक मान लौटाता है, जो असंगत है बाईं ओर दो चर के साथ। इसलिए, कंपाइलर एक त्रुटि की रिपोर्ट करता है।
दुर्भाग्य से, गो फ़ंक्शन में एकाधिक मान लौटाते समय अस्थायी चर का उपयोग करने से बचने का कोई तरीका नहीं है। ऐसा इसलिए है क्योंकि कंपाइलर को प्राप्त होने वाले वेरिएबल्स की संख्या से मेल खाने के लिए लौटाए गए मानों की संख्या की आवश्यकता होती है। हालाँकि, नामित रिटर्न मानों का उपयोग करके या किसी संरचना को वापस करके अस्थायी चर के उपयोग को कम करना संभव है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3