É seguro deletar elementos de um map durante a iteração sobre ele em Go?
Olá a todos! Comecei a estudar Go recentemente e me deparei com um comportamento inesperado ao trabalhar com map. Preciso percorrer todos os elementos de um map e deletar aqueles que não atendem a uma condição específica. Em outras linguagens (por exemplo, Python), modificar um dicionário durante a iteração geralmente causa erros ou comportamento indefinido. Escrevi o seguinte 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)
}
```
O código funciona e imprime `map[1:apple 3:cherry]`. Mas não tenho certeza se isso é seguro. Isso pode causar pânico, condição de corrida ou pular elementos? Na documentação, encontrei que adicionar novas chaves durante a iteração pode causar problemas, mas sobre deletar é dito de forma ambígua. Por favor, me digam: é possível fazer isso?