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