Sobes.tech
Junior — Middle

Que tipos de dados podem atuar como chave num container map?

sobes.tech IA

Resposta da IA

Em Go, a chave num mapa só pode ser de tipos de dados que sejam comparáveis (comparáveis). Isso significa que deve estar definido o operador == para a chave.

Tipos de chaves adequados:

  • Valores booleanos (bool)
  • Números (int, float64, uint8, etc.)
  • Strings (string)
  • Ponteiros
  • Canais
  • Interfaces, se o tipo dinâmico for comparável
  • Estruturas, se todos os seus campos forem comparáveis

Não é possível usar como chave:

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

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 tipo não comparável como chave, o compilador gerará um erro.