Sobes.tech
Junior — Middle

Оё имкон дорад, ки структураҳоро ҳамчун калидҳо дар массиви асосиативӣ ё харита истифода барем?

sobes.tech AI

Ҷавоб аз AI

Дар Go, калидҳо дар харита танҳо метавонанд аз намудҳое бошанд, ки амали муқоиса (оператори ==) -ро дастгирӣ мекунанд. Сохторҳо метавонанд ҳамчун калид истифода шаванд, агар ҳамаи майдонҳои онҳо муқоисашаванда бошанд. Масалан, агар сохтор танҳо намудҳои асосӣ (int, string ва ғайра) дошта бошад, онро ҳамчун калид истифода бурда мешавад. Агар сохтор дорои срезҳо, харитаҳо ё функсияҳо бошад, онро ҳамчун калид истифода кардан мумкин нест.

Масал:

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]) // баромад: нуқта
}

Агар сохтор дорои майдонҳои муқоисанашаванда бошад, компилятор хато медиҳад.