Junior — Middle
Ma'lumotlar tuzilmasini xarita yoki xesh-jadvalda kalit sifatida ishlatish mumkinmi?
sobes.tech AI
AIdan javob
Go tilida, ma'lumotlar tuzilmasi xaritada (map) kalit sifatida ishlatilishi mumkin, agar u solishtirishga mos (comparable) talablariga javob bersa. Bu shuni anglatadiki, tuzilmaning barcha maydonlari == operatori yordamida solishtirilishi mumkin bo'lgan tiplarda bo'lishi kerak.
Masalan, faqat asosiy turlarni (int, string, bool va boshqalar) yoki boshqa solishtiriladigan tuzilmalarni o'z ichiga olgan tuzilmalar kalit sifatida ishlatilishi mumkin. Biroq, slices, xaritalar yoki funksiyalarni o'z ichiga olgan tuzilmalar kalit bo'la olmaydi, chunki bu turlar solishtirilmaydi.
Misol:
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] = "nuqta"
fmt.Println(m[p]) // chiqish: nuqta
}
Agar tuzilma solishtirilmaydigan maydonlarni o'z ichiga olsa, kompilyator uni kalit sifatida ishlatishga urinishda xato beradi.