Sobes.tech
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.