Eleman ekleme
- Go kursu
- Başlangıç
- Ders 52/90
- 4 dk
Map'e anahtarla eleman eklemeyi öğrenirsin.
Eleman ekleme ve güncelleme
m[anahtar] = değer anahtar yoksa ekler, varsa değerini günceller. Olmayan anahtarı okumak değer türünün sıfır değerini verir; bu, sayaçlarda çok kullanışlıdır:
sayac := map[string]int{}
for _, k := range []string{"go", "sql", "go"} {
sayac[k]++
}
fmt.Println(sayac) // map[go:2 sql:1]sayac[k]++ ilk görüşte 0'dan başlar, sonra artar.
Struct değerlerini güncellemek
Map değeri bir struct ise alanına doğrudan yazılamaz: m["a"].Adet = 5 derleme hatasıdır. Değeri al, değiştir, geri yaz:
u := stok["kalem"]
u.Adet += 2
stok["kalem"] = uAlternatif olarak map değeri işaretçi tutulur: map[string]*Urun; o zaman stok["kalem"].Adet += 2 çalışır.
Uygulama Kelime sayacı
strings.Fields("go sql go web go") ile kelimeleri al ve map[string]int ile say. go ve web sayılarını tek satırda yazdır.
Başlangıç kodu
package main
import (
"fmt"
"strings"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"fmt"
"strings"
)
func main() {
say := map[string]int{}
for _, k := range strings.Fields("go sql go web go") {
say[k]++
}
fmt.Println(say["go"], say["web"])
}Beklenen çıktı
3 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>m := map[string]int{}</code> için <code>m["yok"]</code> ne döndürür?
- nil
- panic
- -1
- 0 Doğru cevap
Açıklama: Olmayan anahtar için int'in sıfır değeri döner; anahtarın gerçekten var olup olmadığını anlamak için comma-ok biçimi kullanılır.
2 Sayacı artır
for _, kelime := range kelimeler {
say[kelime]____
}
for _, kelime := range kelimeler {
say[kelime]++
}
Açıklama: say[kelime]++ olmayan anahtarı 0'dan başlatıp artırır.
3 İşlem ve sonuç
| Kavram | Anlamı |
|---|---|
m["a"] = 1 (yeni) |
Ekler |
m["a"] = 2 (var) |
Günceller |
m["yok"] |
Sıfır değer |
m["a"]++ |
Sayaç artırır |