Avatar ·

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