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
deletepe un slice:invalid argument: s (variable of type []int) is not a map. Foloseșteslices.Delete.m[k] = 0saum[k] = ""în loc dedelete: 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.