मुख्य सामग्री पर जाएं
मॉड्यूल 4 · पाठ 3 का 5पाठ्यक्रम में 18/50~12 min
मॉड्यूल पाठ (3/5)

मानचित्र: कुंजियाँ और मान

एक मानचित्र एक कुंजी→मान हैश तालिका है: map[K]V। मानचित्र संदर्भ हैं प्रकार: किसी फ़ंक्शन में पास किए गए, वे समान संग्रहण साझा करते हैं। वे अवश्य होंगे इससे पहले कि आप उन्हें लिख सकें (make या शाब्दिक अर्थ के साथ) प्रारंभ किया गया।

निर्माण

Go
// with a literal
prices := map[string]int{"pane": 2, "latte": 3}

// with make
counters := make(map[string]int)
counters["a"] = 1

// nil map (readable, NOT writable)
var m map[string]int
fmt.Println(m["x"])    // 0 — ok
// m["y"] = 1          // PANIC

बुनियादी संचालन

Go
m := map[string]int{"a": 1}

m["b"] = 2              // insert/update
v := m["a"]             // get; if missing: zero value
delete(m, "a")          // remove (ok even if the key doesn't exist)
n := len(m)             // number of entries

अल्पविराम-ठीक: "लापता" को "शून्य मान" से अलग करना

Go
v, ok := m["x"]
if !ok {
    fmt.Println("key missing")
} else {
    fmt.Println("found:", v)
}

यह जानने का एकमात्र तरीका है कि कोई कुंजी मौजूद है या नहीं, क्योंकि m["x"] वापस आती है कुंजी न होने पर भी शून्य मान। एक मौलिक पैटर्न.

पुनरावृत्ति: यादृच्छिक क्रम

Go
for k, v := range m {
    fmt.Println(k, v)
}

कुंजियाँ: केवल तुलनीय प्रकार

कुंजियाँ तुलनीय होनी चाहिए: string, संख्याएँ, bool, सूचक, चैनल, इंटरफ़ेस, तुलनीय प्रकार की सरणियाँ, तुलनीय की संरचनाएँ खेत. स्लाइस, मानचित्र और फ़ंक्शन तुलनीय नहीं हैं → वे नहीं कर सकते चाबियाँ हो.

Go
m := map[[2]int]string{}   // ok: array is comparable
// m := map[[]int]string{} // ERROR: slice is not comparable

पैटर्न: काउंटर

मानचित्रों के सबसे सामान्य उपयोगों में से एक:

Go
words := []string{"a", "b", "a", "c", "b", "a"}
freq := map[string]int{}
for _, w := range words {
    freq[w]++   // access to a missing key is 0 → 0+1 = 1
}
// freq = {"a": 3, "b": 2, "c": 1}

इसे अजमाएं

व्यायाम#go.m4.l3.e1
प्रयास: 0लोड हो रहा है...

'a' -> 1 और 'b' -> 2 मानों के साथ एक नक्शा[स्ट्रिंग]int बनाएं, फिर 'c' -> 3 जोड़ें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

शाब्दिक: `मानचित्र[K]V{"कुंजी": मान, ...}`।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम#go.m4.l3.e2
प्रयास: 0लोड हो रहा है...

कुंजी 'x' (मौजूद नहीं) को v में पढ़ने के लिए अल्पविराम-ओके पैटर्न का उपयोग करें, ठीक है और दोनों को प्रिंट करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

दो वापसी मान: मान और एक उपस्थिति बूलियन।

3 प्रयासों के बाद समाधान उपलब्ध है

Quiz#go.m4.l3.e3
तैयार

शून्य मानचित्र पर लिखने पर क्या होता है?

Go
var m map[string]int
m["a"] = 1
उत्तर विकल्प

संक्षिप्त

  • map[K]V: कुंजी-मूल्य, संदर्भ, हैश-समर्थित।
  • make या शाब्दिक रूप से प्रारंभ करें; शून्य मानचित्र → लिखने पर घबराहट।
  • v, ok := m[k] "लापता" को "शून्य मान" से अलग करने का एकमात्र तरीका है।
  • delete(m, k) हटाता है; ठीक है, भले ही k मौजूद न हो।
  • range पुनरावृत्ति: यादृच्छिक आदेश।
  • कुंजियाँ: केवल तुलनीय प्रकार (कोई स्लाइस/मानचित्र/फ़ंक नहीं)।
  • काउंटर पैटर्न: freq[k]++ अंतर्निहित शून्य मान का लाभ उठाता है।