Junior — Middle
Quais são as limitações e características do uso de chaves na estrutura de dados map?
sobes.tech IA
Resposta da IA
Em Go, as chaves num mapa devem satisfazer certos requisitos:
-
A chave deve ser comparável: Isto significa que o tipo de chave deve suportar a operação de comparação
==e!=. Por exemplo, tipos básicos (int, string, bool), ponteiros, estruturas e arrays, se todos os seus campos forem comparáveis. -
Não é permitido usar slices, mapas e funções como chaves: Estes tipos não são comparáveis e causarão um erro de compilação.
-
Características adicionais:
- Estruturas podem ser chaves se todos os seus campos forem comparáveis.
- Se uma estrutura contiver um campo de tipo slice ou mapa, ela não pode ser uma chave.
-
Desempenho: Usar estruturas grandes como chaves pode ser ineficiente devido à cópia.
Exemplo:
m := make(map[string]int) // string é uma chave válida
// Chave inválida:
// m2 := make(map[[]int]string) // erro de compilação
// Estrutura com campos comparáveis:
type Point struct { X, Y int }
m3 := make(map[Point]string)
m3[Point{1,2}] = "A"
Portanto, ao escolher uma chave, é importante considerar sua comparabilidade e imutabilidade.