Sobes.tech
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.