Özet - Map
- Go kursu
- Başlangıç
- Ders 56/90
- 4 dk
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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
grup[k] = ____(grup[k], ad)
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 |