Est-il sûr de supprimer des éléments d'une map pendant son itération en Go ?
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un comportement inattendu en travaillant avec map. Je dois parcourir tous les éléments d'une map et supprimer ceux qui ne correspondent pas à une certaine condition. Dans d'autres langages (par exemple, Python), modifier un dictionnaire pendant l'itération entraîne souvent des erreurs ou un comportement indéfini. J'ai écrit ce code :
```go
package main
import "fmt"
func main() {
m := map[int]string{
1: "apple",
2: "banana",
3: "cherry",
4: "date",
}
for k, v := range m {
if v == "banana" || v == "date" {
delete(m, k)
}
}
fmt.Println(m)
}
```
Le code fonctionne et affiche `map[1:apple 3:cherry]`. Mais je ne suis pas sûr que ce soit sûr. Cela peut-il provoquer une panique, une race condition ou l'omission d'éléments ? Dans la documentation, j'ai trouvé que l'ajout de nouvelles clés pendant l'itération peut causer des problèmes, mais pour la suppression, c'est dit de manière ambiguë. Dites-moi, s'il vous plaît, peut-on faire cela ? Il y a