ओलीडे के अलावा, शून्य मानों पर युक्ति देखें :
जब मेमोरी को एक मूल्य को संग्रहीत करने के लिए आवंटित किया जाता है, या तो एक घोषणा या मेक या नए की कॉल के माध्यम से, और कोई स्पष्ट आरंभीकरण प्रदान नहीं किया जाता है, तो मेमोरी को एक डिफ़ॉल्ट आरंभीकरण दिया जाता है। इस तरह के मूल्य का प्रत्येक तत्व अपने प्रकार के लिए शून्य मान पर सेट होता है: बूलियन के लिए गलत, पूर्णांक के लिए 0, फ़्लोट के लिए 0.0, "" स्ट्रिंग्स के लिए, और पॉइंटर्स, फ़ंक्शंस, इंटरफेस, स्लाइस, चैनल और मैप्स के लिए शून्य। यह आरंभीकरण पुनरावर्ती रूप से किया जाता है, इसलिए उदाहरण के लिए, यदि कोई मान निर्दिष्ट नहीं किया जाता है, तो किसी सरणी के प्रत्येक तत्व के अपने क्षेत्र शून्य हो जाएंगे।
जैसा कि आप देख सकते हैं, nil
हर प्रकार के लिए शून्य मान नहीं है, लेकिन केवल पॉइंटर्स, फ़ंक्शंस, इंटरफेस, स्लाइस, चैनल और मैप्स के लिए। यही कारण है कि config == nil
एक त्रुटि है और
&config == nil
नहीं है।
यह जांचने के लिए कि क्या आपके struct अप्रारंभीकृत है आप अपने संबंधित शून्य मान के लिए हर सदस्य की जांच करना होगा (जैसे host == ""
, port == 0
, आदि) या एक निजी क्षेत्र जो एक आंतरिक प्रारंभ विधि से सेट किया गया है। उदाहरण:
type Config struct {
Host string
Port float64
setup bool
}
func NewConfig(host string, port float64) *Config {
return &Config{host, port, true}
}
func (c *Config) Initialized() bool { return c != nil && c.setup }