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}] = "ნიშანი"
თუ სცადეთ არასადარებადი ტიპის გამოყენება გასაღებად, კომპილატორი შეცდომას გამოიწვევს.