delete în Go

Șterge o cheie (și valoarea ei) dintr-un map; dacă cheia nu există sau map-ul este nil, nu face nimic.

Sintaxă
func delete(m map[Type]Type1, key Type)

delete(m, cheie)

Ce face delete

delete(m, k) elimină perechea cu cheia k din map-ul m. Nu returnează nimic. Dacă cheia nu există, sau dacă map-ul este nil, delete nu face nimic și nu dă eroare.

Ștergerea cheilor în timp ce parcurgi map-ul cu range este permisă: cheile șterse și încă neparcurse nu mai apar. Pentru a goli tot map-ul folosește clear(m) (Go 1.21), iar pentru a șterge după o condiție, maps.DeleteFunc. delete funcționează doar pe map-uri; pentru slice-uri există slices.Delete.

Parametri

Parametru Descriere
m Map-ul din care se șterge.
key Cheia de șters.

Exemple

Exemplul 1: Ștergerea unei chei

package main

import "fmt"

func main() {
    cos := map[string]int{"pâine": 2, "lapte": 1, "ouă": 10}
    delete(cos, "lapte")
    delete(cos, "cafea") // nu există: nimic nu se întâmplă
    fmt.Println(cos, len(cos))

    _, exista := cos["lapte"]
    fmt.Println("lapte în coș:", exista)
}

Rezultat

map[ouă:10 pâine:2] 2
lapte în coș: false

Exemplul 2: Ștergere în timpul parcurgerii

Este sigur să ștergi chei dintr-un map în timp ce îl parcurgi.

package main

import "fmt"

func main() {
    stoc := map[string]int{"mere": 12, "pere": 0, "prune": 5, "gutui": 0}
    for produs, bucati := range stoc {
        if bucati == 0 {
            delete(stoc, produs)
        }
    }
    fmt.Println(stoc)
}

Rezultat

map[mere:12 prune:5]

Greșeli frecvente

  • delete pe un slice: invalid argument: s (variable of type []int) is not a map. Folosește slices.Delete.
  • m[k] = 0 sau m[k] = "" în loc de delete: cheia rămâne în map.

Comenzi înrudite

  • map și map-uri: Tabel cheie-valoare (dicționar): căutare rapidă după cheie, adăugare, ștergere și verificare cu v, ok.
  • clear: Golește un map (șterge toate cheile) sau pune pe zero toate elementele unui slice, păstrând lungimea.
  • make: Creează și inițializează slice-uri, map-uri și canale, cu lungime, capacitate sau buffer dat.