CodeBlanks Logo Icon CodeBlanks

Özet - Map

Map kavramlarını birleştirerek bir sözlük yazarsın.

Map özeti

Oluşturma: map[K]V{...} ya da make(map[K]V) (nil map'e yazılamaz). Okuma: m[k] (yoksa sıfır değer), v, ok := m[k] (varlık). Yazma: m[k] = v, m[k]++. Silme: delete(m, k), clear(m). Gezme: range (rastgele sıra). Map'ler referans gibi davranır ve eşzamanlı yazmaya karşı güvenli değildir.

Gruplama

Map'in en yaygın kullanımlarından biri veriyi bir özelliğe göre gruplamaktır:

urunler := []struct{ Ad, Kategori string }{
    {"Kalem", "kırtasiye"}, {"Elma", "meyve"}, {"Defter", "kırtasiye"},
}
grup := map[string][]string{}
for _, u := range urunler {
    grup[u.Kategori] = append(grup[u.Kategori], u.Ad)
}
fmt.Println(grup["kırtasiye"])  // [Kalem Defter]

Uygulama Kategoriye göre grupla

Yukarıdaki ürün listesini map[string][]string ile kategoriye göre grupla. len(grup) ve grup["kırtasiye"] değerlerini tek satırda yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func main() {
    urunler := []struct{ Ad, Kategori string }{
        {"Kalem", "kırtasiye"}, {"Elma", "meyve"}, {"Defter", "kırtasiye"},
    }
    grup := map[string][]string{}
    for _, u := range urunler {
        grup[u.Kategori] = append(grup[u.Kategori], u.Ad)
    }
    fmt.Println(len(grup), grup["kırtasiye"])
}

Beklenen çıktı

2 [Kalem Defter]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir öğrencinin birden çok notunu tutmak için hangi tür uygundur?

  • map[[]int]string
  • map[string]int
  • []map[int]
  • map[string][]int Doğru cevap

Açıklama: Değer bir dilim olabilir; m[ad] = append(m[ad], not) ile nil dilime bile ekleme yapılabilir. Dilim anahtar olamaz.

2 Gruba ekle

Soru
grup[k] = ____(grup[k], ad)
Cevap
grup[k] = append(grup[k], ad)

Açıklama: Olmayan anahtar nil dilim döndürdüğü için append ilk elemanı da sorunsuz ekler.

3 Grubun özeti

Kavram Anlamı
make(map[K]V) Oluşturma
v, ok := m[k] Varlık kontrolü
delete(m, k) Silme
map[K][]V Gruplama

Başlangıç bölümündeki tüm dersler