Junior — Middle
Como usar chaves em um map para criar estruturas de dados que inicialmente não estão previstas na linguagem?
sobes.tech IA
Resposta da IA
Em Go, um mapa é uma matriz associativa onde as chaves podem ser não apenas tipos simples, mas também compostos, desde que sejam comparáveis (por exemplo, strings, números, ponteiros, estruturas sem slices ou mapas). Isso permite usar mapas para criar estruturas de dados complexas que não estão inicialmente presentes na linguagem.
Por exemplo, pode-se usar uma estrutura como chave para implementar uma matriz bidimensional ou um grafo:
// A chave são as coordenadas de um ponto
type Point struct {
X, Y int
}
// O valor pode ser uma cor ou peso
var matrix = make(map[Point]string)
matrix[Point{X:1, Y:2}] = "red"
matrix[Point{X:3, Y:4}] = "blue"
Também é possível usar um mapa para implementar um conjunto, onde a chave é o elemento e o valor é uma estrutura vazia (struct{}), que ocupa 0 bytes:
set := make(map[string]struct{})
set["apple"] = struct{}{}
set["banana"] = struct{}{}
// Verificar se um elemento existe
if _, exists := set["apple"]; exists {
fmt.Println("apple está no conjunto")
}
Assim, os mapas em Go são uma ferramenta flexível para criar várias estruturas de dados que ampliam as capacidades da linguagem.