Sobes.tech
Junior — Middle

Je možné použiť štruktúry ako kľúče v asociatívnom poli alebo mape?

sobes.tech AI

Odpoveď od AI

V jazyku Go môžu byť kľúče v mape iba typy, ktoré podporujú operáciu porovnania (operátor ==). Štruktúry môžu byť použité ako kľúče, ak sú všetky ich polia porovnateľné. Napríklad, ak štruktúra obsahuje iba základné typy (int, string atď.), môže byť použitá ako kľúč. Ak však štruktúra obsahuje slices, mapy alebo funkcie, nemôže byť použitá ako kľúč.

Príklad:

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] = "bod"
    fmt.Println(m[p]) // výstup: bod
}

Ak štruktúra obsahuje nesúťažiteľné polia, kompilátor vypíše chybu.