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]) // გამოტანა: ნიშანი
}

თუ სტრუქტურა შეიცავს შეუთანხმებელ ველებს, კომპილატორი გამოიტანს შეცდომას.