Senior
O que é um map em Go, como funciona internamente, o que é uma colisão e como ela é tratada?
sobes.tech IA
Resposta da IA
Em Go, map é um tipo de dado incorporado para armazenar pares chave-valor com acesso rápido. Dentro de map, é implementado um mecanismo de tabela hash.
Estrutura interna:
- A chave é hashada em um valor inteiro.
- O hash determina o índice do bucket onde os pares são armazenados.
- Cada bucket contém vários pares chave-valor.
Colisão — situação em que chaves diferentes têm o mesmo hash e caem no mesmo bucket. Para lidar com isso, Go usa:
- Armazenamento de vários pares no mesmo bucket.
- Quando há muitas colisões, ocorre uma redistribuição (rehash) aumentando o número de buckets.
Isso permite manter acesso rápido aos elementos mesmo em caso de colisões.
Exemplo de uso de map:
m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5
Assim, o map em Go é uma estrutura eficiente para arrays associativos com otimização interna para minimizar o impacto das colisões.