¿Es seguro eliminar elementos de un map durante la iteración en Go?
¡Hola a todos! Acabo de empezar a aprender Go y me encontré con un comportamiento inesperado al trabajar con map. Necesito recorrer todos los elementos de un map y eliminar aquellos que no cumplan una condición determinada. En otros lenguajes (por ejemplo, Python), modificar un diccionario durante la iteración a menudo provoca errores o comportamiento indefinido. Escribí este código:
```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)
}
```
El código funciona y muestra `map[1:apple 3:cherry]`. Pero no estoy seguro de que sea seguro. ¿Podría causar un panic, race condition o saltarse elementos? En la documentación encontré que agregar nuevas keys durante la iteración puede causar problemas, pero sobre eliminar no está claro. Por favor, díganme si se puede hacer así. ¿Hay
No answers yet.
Inicia sesión para dejar una respuesta