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.