Junior — Middle
Ar galima naudoti duomenų struktūrą kaip raktą žemėlapyje ar maišos lentelėje?
sobes.tech AI
Atsakymas iš AI
Go kalboje duomenų struktūra gali būti naudojama kaip raktas žemėlapyje (map), jei ji atitinka palyginimo (comparable) reikalavimus. Tai reiškia, kad visi struktūros laukai turi būti tipai, kurie gali būti palyginti naudojant == operatorių.
Pavyzdžiui, struktūros, kurios tik apima pagrindinius tipus (int, string, bool ir kt.) arba kitas palyginamas struktūras, gali būti raktai. Tačiau struktūros, kurios turi sluoksnius, žemėlapius ar funkcijas, negali būti raktai, nes šie tipai nėra palyginami.
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ą bandydamas ją naudoti kaip rakto žemėlapyje.