Junior — Middle
Aké sú obmedzenia a vlastnosti používania kľúčov v dátovej štruktúre map?
sobes.tech AI
Odpoveď od AI
V Go musiať kľúče v mape spĺňať určité požiadavky:
-
Kľúč musí byť porovnateľný: To znamená, že typ kľúča musí podporovať operácie porovnania
==a!=. Napríklad základné typy (int, string, bool), ukazovatele, štruktúry a pole, ak sú všetky ich polia porovnateľné. -
Nedá sa použiť ako kľúče rezy, mapy a funkcie: Tieto typy nie sú porovnateľné a spôsobia chybu pri kompilácii.
-
Vlastnosti:
- Štruktúry môžu byť kľúčmi, ak sú všetky ich polia porovnateľné.
- Ak štruktúra obsahuje pole typu slice alebo mapu, nemôže byť kľúčom.
-
Výkon: Použitie veľkých štruktúr ako kľúčov môže byť neefektívne kvôli kopírovaniu.
Príklad:
m := make(map[string]int) // string je platný kľúč
// Neplatný kľúč:
// m2 := make(map[[]int]string) // chyba pri kompilácii
// Štruktúra s porovnateľnými poľami:
type Point struct { X, Y int }
m3 := make(map[Point]string)
m3[Point{1,2}] = "A"
Preto je pri výbere kľúča dôležité zvážiť jeho porovnateľnosť a nemennosť.