Sobes.tech
Junior — Middle

Маалыматтардын түзүмүн картада же хеш-таблицада ачкыч катары колдонуу мүмкүнбү?

sobes.tech AI

AIден жооп

Go тилинде маалыматтык структураны картада (map) ачкыч катары колдонуу мүмкүн, эгер ал салыштыруу талаптарына (comparable) жооп берсе. Бул структуранын бардык талаалары == оператору менен салыштырмалуу түрлөрдө болушу керек дегенди билдирет.

Мисалы, гана негизги түрлөрдү (int, string, bool жана башка) камтыган структуралар ачкыч катары колдонулушу мүмкүн. Бирок, срездер, карталар же функцияларды камтыган структуралар ачкыч боло албайт, анткени бул түрлөр салыштырылбайт.

Мисал:

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] = "нүктө"
    fmt.Println(m[p]) // чыгуу: нүктө
}

Эгер структура салыштырылбай турган талааларды камтыса, компилятор аны картада ачкыч катары колдонууга аракет кылганда ката чыгарат.