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

मूल बातें जानें: क्यों शून्य स्लाइस नए मान स्वीकार करते हैं, लेकिन शून्य मानचित्र नहीं करते हैं

2024-11-01 को प्रकाशित
ब्राउज़ करें:396

निल स्लाइस में नए मान जोड़े जा सकते हैं लेकिन निल मैप में नए मान जोड़ने से रनटाइम त्रुटि उत्पन्न होती है। आइए देखें क्यों

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 रेपो को चेकआउट करें:

Go Basics: Why nil Slices accept new values, but nil Maps don साई7xp / सीखो-गोलंग

GoLang मूल बातें उन्नत करने के लिए। जिसमें डिज़ाइन पैटर्न, ठोस सिद्धांत और बहुत कुछ शामिल हैं

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/sai7xp/go-basics-why-nil-slices-accept-new-values-but-nil-maps-dont-23l0?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3