Sobes.tech
Senior

O que é um map em Go? Como funciona por baixo dos panos? O que acontece em caso de colisão?

sobes.tech IA

Resposta da IA

No Go, um mapa é um tipo de dado incorporado para armazenar pares chave-valor com acesso rápido por chave.

Por baixo dos panos, o mapa é implementado como uma tabela hash com endereçamento aberto e uso de buckets. Cada bucket contém vários elementos, o que ajuda a reduzir colisões.

Ao adicionar um elemento, a chave é hashada, e o hash determina o bucket. Se já houver elementos com outra chave no bucket, ocorre uma colisão. Nesse caso, os novos elementos são adicionados ao bucket, e na busca, percorrem-se os elementos dentro do bucket para comparar as chaves.

Se o número de elementos no bucket ficar muito grande, ocorre uma redistribuição (rehash) com aumento do número de buckets para manter o desempenho.

Exemplo de uso de map em Go:

m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5

Assim, o map garante acesso eficiente e armazenamento de dados usando hashing e gerenciamento de colisões dentro dos buckets.