مرکزی مواد پر جائیں
ماڈیول 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 اقدار کے ساتھ ایک نقشہ[string]int بنائیں، پھر 'c' -> 3 شامل کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

لفظی: `map[K]V{"key": قدر، ...}`۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#go.m4.l3.e2
کوششیں: 0لوڈ ہو رہا ہے…

کلید 'x' (موجودہ نہیں) کو v، اوکے میں پڑھنے کے لیے کوما اوکے پیٹرن کا استعمال کریں اور دونوں کو پرنٹ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

واپسی کی دو قدریں: قدر اور موجودگی کا بولین۔

3 کوششوں کے بعد حل دستیاب ہے۔

Quiz#go.m4.l3.e3
تیار

صفر کے نقشے پر لکھتے وقت کیا ہوتا ہے؟

Go
var m map[string]int
m["a"] = 1
جواب کے اختیارات

Recap

  • map[K]V: کلیدی قدر، حوالہ، ہیش بیکڈ۔
  • make یا لفظی کے ساتھ شروع کریں؛ صفر کا نقشہ → لکھنے پر گھبراہٹ۔
  • v, ok := m[k] "لاپتہ" کو "صفر قدر" سے الگ کرنے کا واحد طریقہ ہے۔
  • delete(m, k) ہٹاتا ہے؛ ٹھیک ہے یہاں تک کہ اگر k موجود نہیں ہے۔
  • range تکرار: بے ترتیب آرڈر۔
  • کلیدیں: صرف موازنہ کی قسمیں (کوئی ٹکڑا/نقشہ/فنک نہیں)۔
  • کاؤنٹر پیٹرن: freq[k]++ مضمر صفر قدر کا فائدہ اٹھاتا ہے۔