CodeBlanks Logo Icon CodeBlanks

Map'te silme

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))  // 1

Tü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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
____(sepet, "kalem")
Cevap
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

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