Middle
Welke soorten gegevens kunnen worden gebruikt als sleutels?
sobes.tech AI
Antwoord van AI
In Go kunnen de sleutels in een map alleen van typen zijn die de vergelijking (==) ondersteunen. Dit komt doordat het zoeken van een sleutel in een hash-tabel vereist dat de sleutels op gelijkheid worden vergeleken.
Typen die als sleutels kunnen worden gebruikt:
- Primitieve typen:
int,float64,string,bool, enz. - Pointers
- Structuren, als al hun velden vergelijkbaar zijn
- Arrays, als de elementen vergelijkbaar zijn
Typen die niet als sleutels kunnen worden gebruikt:
- Slices (
slice) - Maps (
map) - Functies
Dit komt doordat deze typen geen vergelijking met == ondersteunen.
Voorbeeld:
m := make(map[string]int)
m["key"] = 42
// Struct met vergelijkbare velden
type Point struct {
X, Y int
}
m2 := make(map[Point]string)
m2[Point{1, 2}] = "Een punt"
Als je probeert een slice of map als sleutel te gebruiken, geeft de compiler een foutmelding.