CodeBlanks Logo Icon CodeBlanks

Map tanımı

make ile anahtar-değer map'i tanımlamayı öğrenirsin.

Map tanımı

Map, anahtarları değerlere eşleyen bir veri yapısıdır; anahtarla arama çok hızlıdır. Tür map[AnahtarTürü]DeğerTürü biçimindedir:

fiyat := map[string]float64{
    "kalem":  12.5,
    "defter": 20,
}
stok := make(map[string]int)
fmt.Println(fiyat["kalem"], len(fiyat))  // 12.5 2

Anahtar türü == ile karşılaştırılabilir olmalıdır (string, sayı, struct...); dilim ve map anahtar olamaz.

Map bir referanstır

Map değişkeni alttaki veri yapısına bir referans taşır. Map'i bir fonksiyona vermek ya da başka değişkene atamak kopya oluşturmaz; değişiklikler her yerde görünür:

func ekle(m map[string]int) {
    m["yeni"] = 1
}

m := map[string]int{}
ekle(m)
fmt.Println(len(m))  // 1

Map'ler eşzamanlı yazmaya karşı güvenli değildir; birden çok goroutine yazacaksa kilit gerekir.

Uygulama Fiyat tablosu

fiyat := map[string]float64{"kalem": 12.5, "defter": 20} tanımla. fiyat["silgi"] = 4 ekle ve anahtar sayısını ile silginin fiyatını 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() {
    fiyat := map[string]float64{"kalem": 12.5, "defter": 20}
    fiyat["silgi"] = 4
    fmt.Println(len(fiyat), fiyat["silgi"])
}

Beklenen çıktı

3 4

Soru ve cevaplar

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

1 <code>var m map[string]int; m["a"] = 1</code> çalışınca ne olur?

  • panic: nil map'e yazılamaz Doğru cevap
  • m["a"] 1 olur
  • Derleme hatası
  • Hiçbir şey olmaz

Açıklama: var ile tanımlanan map nil'dir; okunabilir ama yazılamaz. Önce make ya da değişmez değerle oluşturulmalıdır.

2 Map oluştur

Soru
stok := ____(map[string]int)
stok["kalem"] = 3
Cevap
stok := make(map[string]int)
stok["kalem"] = 3

Açıklama: make yazılabilir, boş bir map oluşturur.

3 Kod ve sonuç

Kavram Anlamı
map[string]int{"a": 1} Değişmez değerle map
make(map[string]int) Boş map
var m map[string]int nil map
len(m) Anahtar sayısı

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