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

शून्य त्रुटि उदाहरण की तुलना शून्य के रूप में क्यों नहीं की जाती?

2025-01-15 को प्रकाशित
ब्राउज़ करें:395

Why Does a Nil Error Instance Not Compare as Nil?

शून्य त्रुटि उदाहरण शून्य के रूप में प्रदर्शित नहीं हो रहे हैं

इंटरफ़ेस तुलनाओं को समझने में, यह पहचानना महत्वपूर्ण है कि वे प्रकार और मूल्य दोनों का मूल्यांकन करते हैं।

कोड स्निपेट पर विचार करें:

type Goof struct {}

func (goof *Goof) Error() string {
    return fmt.Sprintf("I'm a goof")
}

func TestError(err error) {
    if err == nil {
        fmt.Println("Error is nil")
    } else {
        fmt.Println("Error is not nil")
    }
}

func main() {
    var g *Goof // nil
    TestError(g) // expect "Error is nil"
}

यहां, हम उम्मीद करते हैं कि "त्रुटि शून्य नहीं है" क्योंकि जी शून्य है। हालाँकि, इंटरफ़ेस तुलनाओं के कारण, हमें "त्रुटि शून्य है" मिलती है। ऐसा इसलिए है क्योंकि (*Goof)(nil) में error(nil) से भिन्न प्रकार है।

इसे हल करने के लिए, आप var g *Goof के बजाय var err त्रुटि घोषित कर सकते हैं। वैकल्पिक रूप से, यदि आपका फ़ंक्शन कोई त्रुटि देता है, तो बस शून्य लौटाएं।

आगे स्पष्टीकरण के लिए, इंटरफ़ेस तुलना यह जांचती है कि क्या प्रकार समान हैं, न कि यह कि क्या कोई प्रकार एक इंटरफ़ेस लागू करता है। इस प्रकार, निम्नलिखित उदाहरण दर्शाता है कि समान अंतर्निहित डेटा वाले गैर-शून्य इंटरफ़ेस की तुलना विभिन्न प्रकारों के कारण असमान के रूप में की जा सकती है:

package main

import "fmt"

type Bob int

func main() {
    var x int = 3
    var y Bob = 3
    var ix, iy interface{} = x, y
    fmt.Println(ix == iy)
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3