ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 4 · 5లో పాఠం 3కోర్సులో 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 విలువలతో మ్యాప్[string]int సృష్టించండి, ఆపై 'c' -> 3ని జోడించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సాహిత్యం: `మ్యాప్[K]V{"కీ": విలువ, ...}`.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#go.m4.l3.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

'x' (ప్రస్తుతం లేదు) కీని v, ok లోకి చదవడానికి మరియు రెండింటినీ ప్రింట్ చేయడానికి కామా-ok నమూనాను ఉపయోగించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

రెండు రిటర్న్ విలువలు: విలువ మరియు ఉనికి బూలియన్.

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]++ అవ్యక్త సున్నా విలువను ప్రభావితం చేస్తుంది.