टाइप स्विच में गिरावट: एक गहन स्पष्टीकरण
गो में टाइप स्विचिंग उनके ठोस प्रकारों के आधार पर मूल्यों के कुशल प्रबंधन की अनुमति देता है। हालाँकि, मानक स्विच-केस स्टेटमेंट के विपरीत, टाइप स्विच में फॉलथ्रू की स्पष्ट रूप से अनुमति नहीं है। यह डिज़ाइन विकल्प इसके औचित्य पर सवाल उठाता है।
कारणों को समझना
गो विनिर्देश में कहा गया है कि टाइप स्विच में "फ़ॉलथ्रू" की अनुमति नहीं है। यह निषेध कई कारकों से उत्पन्न होता है:
स्पष्टीकरण समस्या, निम्नलिखित कोड पर विचार करें:switch i := x.(type) { केस इंट: fmt.Printf("%T\n", i) // "int" प्रिंट करता है केस बूल: fmt.Printf("%T\n", i) // "बूल" प्रिंट करता है असफल केस स्ट्रिंग: fmt.Printf("%T\n", i) }
यदि फ़ॉलथ्रू की अनुमति दी गई, तो यह स्पष्ट नहीं है कि स्ट्रिंग केस के लिए किस प्रकार को मुद्रित किया जाएगा। यह अस्पष्ट होगा कि क्या मुझे बूलियन रहना चाहिए या एक इंटरफ़ेस बनना चाहिए {} जिसमें बूलियन और स्ट्रिंग दोनों हों। प्रकार स्विच, समान व्यवहार प्राप्त करने के वैकल्पिक तरीके हैं:
switch i := x.(type) { case int: fmt.Printf("%T\n", i) // prints "int" case bool: fmt.Printf("%T\n", i) // prints "bool" fallthrough case string: fmt.Printf("%T\n", i) }
यह दृष्टिकोण प्रकार बेमेल या अस्पष्टता पेश किए बिना विभिन्न प्रकारों के अधिक विशिष्ट प्रबंधन की अनुमति देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3