Junior — Middle
Koja su ograničenja i karakteristike korišćenja ključeva u strukturi podataka map?
sobes.tech АИ
Одговор од АИ
U Go, ključevi u mapi moraju ispunjavati određene zahteve:
-
Ključ mora biti porediv: To znači da tip ključa mora podržavati operacije poređenja
==i!=. Na primer, osnovni tipovi (int, string, bool), pokazivači, strukture i nizovi, ako su svi njihovi atributi poredivi. -
Ne može se koristiti slice, mape i funkcije kao ključevi: Ovi tipovi nisu poredivi i izazvaće grešku pri kompilaciji.
-
Karakteristike:
- Strukture mogu biti ključevi ako su svi njihovi atributi poredivi.
- Ako struktura sadrži atribut tipa slice ili mapa, ne može biti ključ.
-
Performanse: Korišćenje velikih struktura kao ključeva može biti neefikasno zbog kopiranja.
Primer:
m := make(map[string]int) // string je validan ključ
// Nevažeći ključ:
// m2 := make(map[[]int]string) // greška pri kompilaciji
// Struktura sa poredivim atributima:
type Point struct { X, Y int }
m3 := make(map[Point]string)
m3[Point{1,2}] = "A"
Dakle, prilikom izbora ključa, važno je razmotriti njegovu poredivost i nemutabilnost.