Sobes.tech
Junior — Middle

Ar galima naudoti struktūras kaip raktus asociatyviame masyve ar žemėlapyje?

sobes.tech AI

Atsakymas iš AI

Go kalboje raktai map'e gali būti tik tie tipai, kurie palaiko palyginimo operaciją (== operatorius). Struktūros gali būti naudojamos kaip raktai, jei visi jų laukai yra palyginami. Pavyzdžiui, jei struktūra turi tik pagrindinius tipus (int, string ir pan.), ją galima naudoti kaip raktą. Tačiau, jei struktūra turi iškarpas, žemėlapius ar funkcijas, ją naudoti kaip raktą negalima.

Pavyzdys:

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] = "taškas"
    fmt.Println(m[p]) // išvestis: taškas
}

Jei struktūra turi nesuderinamus laukus, kompiliatorius išmes klaidą.