Map tanımı
- Go kursu
- Başlangıç
- Ders 51/90
- 4 dk
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 2Anahtar 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)) // 1Map'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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
stok := ____(map[string]int)
stok["kalem"] = 3
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ı |