Sobes.tech
Junior — Middle

Kas andmeid struktuuri saab kasutada võtmena kaardil või hajutustabelis?

sobes.tech AI

Vastus AI-lt

Go keeles andmestruktuur võib olla kasutatav võtmena kaardis (map), kui see vastab võrdlusnõuetele (comparable). See tähendab, et kogu struktuuri väljad peavad olema tüübid, mida saab võrrelda == operaatoriga.

Näiteks, struktuurid, mis sisaldavad ainult põhityyppe (int, string, bool jne) või teisi võrdlusvõimelisi struktuure, võivad olla võtmed. Kuid struktuurid, mis sisaldavad viiteid, kaarte või funktsioone, ei saa olla võtmed, kuna need tüübid ei ole võrdlusvõimelised.

Näide:

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] = "punkt"
    fmt.Println(m[p]) // väljund: punkt
}

Kui struktuur sisaldab võrdlusvõimelisi välju, annab kompilaator vea, kui seda üritatakse kasutada võtmena kaardis.