Sobes.tech
Junior — Middle

Használhatók-e szerkezetek kulcsként asszociatív tömbben vagy térképen?

sobes.tech MI

Válasz az MI-től

Go-ban a térképen lévő kulcsok csak olyan típusok lehetnek, amelyek támogatják az összehasonlítást (== operátor). Az struktúrák akkor használhatók kulcsként, ha minden mezőjük összehasonlítható. Például, ha egy struktúra csak alapvető típusokat (int, string stb.) tartalmaz, akkor kulcsként használható. Ha azonban a struktúra szeleteket, térképeket vagy függvényeket tartalmaz, akkor nem használható kulcsként.

Példa:

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] = "pont"
    fmt.Println(m[p]) // kimenet: pont
}

Ha a struktúra nem összehasonlítható mezőket tartalmaz, a fordító hibát fog jelezni.