] आयात "fmt" कुछ टाइप करें फंक फनसी (आई इंट) बूल { लौटें I%2 == 0 } func मुख्य () { var एक इंटरफ़ेस {} = funcy _ = a। (func (int) बूल) // काम करता है fmt.println ("बहुत बढ़िया - जाहिरा तौर पर, सचमुच Func हस्ताक्षर वर्क्स निर्दिष्ट करना।") _ = a। (कुछ -कुछ) // पैनिक्स fmt.println ("darn - यहाँ नहीं मिलता है। लेकिन कुछ फंक (int) बूल के समान हस्ताक्षर है।") }
पहला प्रकार का दावा जब स्पष्ट रूप से प्रकार को फंक (int) बूल के रूप में घोषित करता है। हालाँकि, दूसरा प्रकार का उपयोग करने वाला उपनाम कुछ है। इसलिए, टाइप ऑलियस समथिंगफंसी, हालांकि फंक (इंट) बूल के रूप में एक ही हस्ताक्षर साझा करना, एक अलग प्रकार माना जाता है।
var एक इंटरफ़ेस {} = funcy स्विच v: = a। (प्रकार) { केस फनक (इंट) बूल: // टाइप सफलतापूर्वक func (int) बूल के रूप में मुखर किया गया मामला कुछ है: // टाइप सफलतापूर्वक कुछ के रूप में मुखर किया गया गलती करना: // प्रकार का दावा विफल रहा } }
package main import "fmt" type somethingFuncy func(int) bool func funcy(i int) bool { return i%2 == 0 } func main() { var a interface{} = funcy _ = a.(func(int) bool) // Works fmt.Println("Awesome -- apparently, literally specifying the func signature works.") _ = a.(somethingFuncy) // Panics fmt.Println("Darn -- doesn't get here. But somethingFuncy is the same signature as func(int) bool.") }यह तुलना टाइप एलियास का उपयोग करते समय विफल हो जाती है क्योंकि इसके लिए एक सटीक प्रकार मैच की आवश्यकता होती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3