Junior — Middle
É possível usar o valor nil como elemento de iteração para map num ciclo?
sobes.tech IA
Resposta da IA
No Go, o valor nil não pode ser usado como elemento de iteração para map em um ciclo, porque range em map retorna a chave e o valor, e nil é a ausência de valor.
Se o valor em map for um ponteiro ou uma interface, ele pode ser nil, e isso é normal. Mas o próprio iterador não pode ser nil.
Exemplo:
m := map[string]*int{
"a": nil,
"b": new(int),
}
for k, v := range m {
if v == nil {
fmt.Printf("a chave %s contém valor nil\n", k)
} else {
fmt.Printf("a chave %s contém o valor %d\n", k, *v)
}
}
Aqui, v pode ser nil, mas o ciclo range sobre map funciona corretamente.