खोज…


व्याख्या

शून्य मान या शून्य इनिशियलाइज़ेशन को लागू करना सरल है। जावा जैसी भाषाओं से आने से यह जटिल लग सकता है कि कुछ मूल्य nil हो सकते हैं जबकि अन्य नहीं हैं। शून्य मूल्य के सारांश में : द प्रोग्रामिंग प्रोग्रामिंग भाषा विशिष्टता :

पॉइंटर्स, फ़ंक्शंस, इंटरफेस, स्लाइस, चैनल, और मैप्स एकमात्र प्रकार हैं जो शून्य हो सकते हैं। बाकी को उनके संबंधित प्रकारों के आधार पर झूठे, शून्य, या खाली तारों के लिए आरंभिक रूप से तैयार किया जाता है।

यदि कोई कार्य जो कुछ स्थिति की जांच करता है, तो समस्याएं उत्पन्न हो सकती हैं:

func isAlive() bool {
    //Not implemented yet
    return false
}

कार्यान्वयन से पहले ही शून्य मान गलत होगा। इस फ़ंक्शन की वापसी पर निर्भर इकाई परीक्षण झूठी सकारात्मक / नकारात्मक दे सकता है।

एक विशिष्ट वर्कअराउंड भी एक त्रुटि लौटाता है, जो कि गो में मुहावरेदार है:

package main

import "fmt"

func isAlive() (bool, error) {
    //Not implemented yet
    return false, fmt.Errorf("Not implemented yet")
}

func main() {
    _, err := isAlive()
    if err != nil {
        fmt.Printf("ERR: %s\n", err.Error())
    }
    
}

इसे खेल के मैदान पर खेलें

एक संरचना और एक त्रुटि दोनों को वापस करते समय आपको वापसी के लिए एक उपयोगकर्ता संरचना की आवश्यकता होती है, जो बहुत सुरुचिपूर्ण नहीं है। दो प्रति-विकल्प हैं:

  • इंटरफेस के साथ काम करें: एक इंटरफेस को वापस करके शून्य लौटें।
  • संकेत के साथ काम करें: एक सूचक nil हो सकता है

उदाहरण के लिए, निम्न कोड एक पॉइंटर लौटाता है:

func(d *DB) GetUser(id uint64) (*User, error) {
    //Some error ocurred
    return nil, err
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow