Map'te silme
- Go kursu
- Başlangıç
- Ders 54/90
- 4 dk
delete fonksiyonuyla map'ten eleman silmeyi öğrenirsin.
Map'te silme
Yerleşik delete(m, anahtar) fonksiyonu anahtarı map'ten kaldırır. Anahtar yoksa hiçbir şey olmaz; hata da vermez:
stok := map[string]int{"kalem": 3, "silgi": 0}
delete(stok, "silgi")
delete(stok, "yok") // sorun değil
fmt.Println(len(stok)) // 1Tüm anahtarları silmek için Go 1.21'den beri clear(m) kullanılabilir.
Koşula göre temizleme
Stokta kalmayan ürünleri tek döngüde temizlemek:
for ad, adet := range stok {
if adet == 0 {
delete(stok, ad)
}
}Go 1.21 ile gelen maps.DeleteFunc(stok, func(k string, v int) bool { return v == 0 }) aynı işi tek satırda yapar.
Uygulama Stok temizliği
stok := map[string]int{"kalem": 3, "silgi": 0, "defter": 5, "cetvel": 0} tanımla. Adedi 0 olanları range + delete ile sil ve kalan anahtar sayısını yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
stok := map[string]int{"kalem": 3, "silgi": 0, "defter": 5, "cetvel": 0}
for ad, adet := range stok {
if adet == 0 {
delete(stok, ad)
}
}
fmt.Println(len(stok))
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Map üzerinde <code>range</code> ile gezerken eleman silmek güvenli midir?
- Derlenmez
- Evet; Go bunu açıkça destekler Doğru cevap
- Hayır, panic üretir
- Yalnızca son elemanda
Açıklama: Gezinme sırasında silinen ve henüz görülmemiş anahtarlar bir daha gelmez; silme işlemi güvenlidir.
2 Anahtarı sil
____(sepet, "kalem")
delete(sepet, "kalem")
Açıklama: delete(m, k) k anahtarını map'ten kaldırır.
3 İşlem ve sonuç
| Kavram | Anlamı |
|---|---|
delete(m, "var") |
Anahtar kaldırılır |
delete(m, "yok") |
Hiçbir şey olmaz |
clear(m) |
Tüm anahtarlar silinir |
maps.DeleteFunc |
Koşula göre siler |