Sobes.tech
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ť.