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