Sobes.tech
Junior — Middle

Kan een gegevensstructuur worden gebruikt als sleutel in een kaart of hash-tabel?

sobes.tech AI

Antwoord van AI

In Go kan een gegevensstructuur worden gebruikt als sleutel in een kaart (map) als deze voldoet aan de vereisten voor vergelijkbaarheid (comparable). Dit betekent dat alle velden van de structuur van typen moeten zijn die kunnen worden vergeleken met de operator ==.

Bijvoorbeeld, structuren die alleen basis typen bevatten (int, string, bool, enz.) of andere vergelijkbare structuren kunnen als sleutels worden gebruikt. Structuren die slices, kaarten of functies bevatten, kunnen echter geen sleutels zijn, omdat deze typen niet vergelijkbaar zijn.

Voorbeeld:

package main

import "fmt"

type Point struct {
    X, Y int
}

func main() {
    m := make(map[Point]string)
    p := Point{X: 1, Y: 2}
    m[p] = "punt"
    fmt.Println(m[p]) // uitvoer: punt
}

Als de structuur niet-vergelijkbare velden bevat, geeft de compiler een fout bij het proberen deze als sleutel te gebruiken.