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

गो टाइप अलियास की विफलता के कारण

2025-04-12 को पोस्ट किया गया
ब्राउज़ करें:888

] आयात "fmt" कुछ टाइप करें फंक फनसी (आई इंट) बूल { लौटें I%2 == 0 } func मुख्य () { var एक इंटरफ़ेस {} = funcy _ = a। (func (int) बूल) // काम करता है fmt.println ("बहुत बढ़िया - जाहिरा तौर पर, सचमुच Func हस्ताक्षर वर्क्स निर्दिष्ट करना।") _ = a। (कुछ -कुछ) // पैनिक्स fmt.println ("darn - यहाँ नहीं मिलता है। लेकिन कुछ फंक (int) बूल के समान हस्ताक्षर है।") }

Why Does Go's Type Assertion Fail with Type Aliases?
पहला प्रकार का दावा जब स्पष्ट रूप से प्रकार को फंक (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