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ą.