Sobes.tech
Middle

Que tipos de dados podem ser usados como chaves?

sobes.tech IA

Resposta da IA

Em Go, as chaves num mapa podem ser apenas de tipos que suportam a operação de comparação (o operador ==). Isso ocorre porque, para procurar uma chave na tabela hash, é necessário comparar as chaves por igualdade.

Tipos que podem ser usados como chaves:

  • Tipos primitivos: int, float64, string, bool, etc.
  • Ponteiros
  • Estruturas, se todos os seus campos forem comparáveis
  • Arrays, se os elementos forem comparáveis

Tipos que não podem ser usados como chaves:

  • Slices (slice)
  • Mapas (map)
  • Funções

Isso ocorre porque esses tipos não suportam comparação usando ==.

Exemplo:

m := make(map[string]int)
m["key"] = 42

// Estrutura com campos comparáveis
 type Point struct {
     X, Y int
 }

m2 := make(map[Point]string)
m2[Point{1, 2}] = "Um ponto"

Se tentar usar um slice ou mapa como chave, o compilador gerará um erro.