Sobes.tech
Junior — Middle

Használható-e adatstruktúra kulcsként térképen vagy hash-táblában?

sobes.tech MI

Válasz az MI-től

Go nyelvben egy adatszerkezet használható kulcsként egy térképen (map), ha megfelel a összehasonlíthatóság (comparable) követelményeinek. Ez azt jelenti, hogy az összes mező típusának összehasonlíthatónak kell lennie a == operátorral.

Például, olyan szerkezetek, amelyek csak alapvető típusokat (int, string, bool stb.) vagy más összehasonlítható szerkezeteket tartalmaznak, kulcsként használhatók. Azonban, szerkezetek, amelyek szeleteket, térképeket vagy függvényeket tartalmaznak, nem lehetnek kulcsok, mivel ezek a típusok nem összehasonlíthatók.

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 szerkezet nem összehasonlítható mezőket tartalmaz, a fordító hibát fog jelezni, amikor megpróbálja használni kulcsként a térképen.