Sobes.tech
Junior — Middle

რა ტიპის მონაცემები შეიძლება იყოს გასაღებად map კონტეინერში?

sobes.tech AI

პასუხი AI-სგან

Go-да, რუკის გასაღები შეიძლება იყოს მხოლოდ მონაცემთა ტიპებიდან, რომლებიც შედარებადი (comparable) არიან. ეს ნიშნავს, რომ გასაღებისთვის უნდა იყოს განსაზღვრული ოპერატორი ==.

მოსახერხი გასაღების ტიპები:

  • ბულიანი მნიშვნელობები (bool)
  • რიცხვები (int, float64, uint8 და სხვა)
  • სტრიქონები (string)
  • მაჩვენებლები
  • არხები
  • ინტერფეისები, თუ დინამიური ტიპი შედარებადი არის
  • სტრუქტურები, თუ ყველა ველი შედარებადი არის

არ შეიძლება გამოყენება როგორც გასაღები:

  • სლაისები (slice)
  • რუკები (map)
  • ფუნქციები

მაგალითი:

m := make(map[string]int)
m["key"] = 42

// შედარებადი ველებით სტრუქტურა
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "ნიშანი"

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