निल स्लाइस में नए मान जोड़े जा सकते हैं लेकिन निल मैप में नए मान जोड़ने से रनटाइम त्रुटि उत्पन्न होती है। आइए देखें क्यों
var slice []int // nil slice slice = append(slice, 1) // append works as expected fmt.Println(slice) // [1] var m map[string]int // nil map m["one"] = 1 // ? Runtime panic: assignment to entry in nil map
निल स्लाइस में जोड़ना क्यों काम करता है:
स्लाइस एक अंतर्निहित सरणी और गतिशील आकार की डेटा संरचना का संदर्भ है। इसमें 3 घटक शामिल हैं
जब हम शून्य स्लाइस घोषित करते हैं, तो लंबाई और क्षमता शून्य होगी और यह किसी अंतर्निहित सरणी की ओर इशारा नहीं करती है। मूल रूप से एपेंड ऑपरेशन क्षमता की जांच करता है और यदि यह पर्याप्त नहीं है तो यह नए तत्वों को संग्रहीत करने के लिए पर्याप्त क्षमता के साथ नई अंतर्निहित सरणी आवंटित करता है और एक नया स्लाइस लौटाता है जो नव निर्मित सरणी की ओर इशारा करता है। इसलिए अपेक्षा के अनुरूप कार्य जोड़ें।
शून्य मानचित्र में जोड़ने से काम क्यों नहीं होता:
गोलांग में मानचित्र मूल रूप से एक हैश तालिका के रूप में कार्य करता है और कुंजी-मूल्य जोड़ी को संग्रहीत करने से पहले आंतरिक डेटा संरचनाओं को प्रारंभ करने की आवश्यकता होती है।
जब हम किसी मानचित्र को शून्य (var m मानचित्र[स्ट्रिंग]int) के रूप में घोषित करते हैं, तो यह अप्रारंभीकृत होता है और अभी तक कुंजी-मूल्य जोड़े को संग्रहीत करने के लिए तैयार नहीं होता है। इसलिए जब हम शून्य मानचित्र में मान जोड़ने का प्रयास करेंगे तो यह एक रनटाइम त्रुटि उत्पन्न करेगा। ऐसी त्रुटियों से बचने के लिए मेक
का उपयोग करके मानचित्र बनाएं
var m map[string]int // nil map m = make(map[string]int) // initialize it m["one"] = 1 // map is now initialized, so we can add values print(m) // map[one:1]
कोड उदाहरणों के साथ ऐसे विषयों के बारे में अधिक जानने के लिए, बेझिझक मेरे Github रेपो को चेकआउट करें:
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3