Sobes.tech
Middle

Aké typy údajov je možné použiť ako kľúče?

sobes.tech AI

Odpoveď od AI

V jazyku Go môžu byť kľúče v mape iba typy, ktoré podporujú operáciu porovnania (==). To je spôsobené tým, že na vyhľadanie kľúča v hashovacej tabuľke je potrebné porovnať kľúče na rovnosť.

Typy, ktoré môžu byť použité ako kľúče:

  • Primitívne typy: int, float64, string, bool atď.
  • Ukazovatele
  • Štruktúry, ak sú všetky ich polia porovnateľné
  • Pole, ak sú prvky porovnateľné

Typy, ktoré nie je možné použiť ako kľúče:

  • Slicing (slice)
  • Mapy (map)
  • Funkcie

Toto je spôsobené tým, že tieto typy nepodporujú porovnanie pomocou ==.

Príklad:

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

// Štruktúra s porovnateľnými poľami
 type Point struct {
     X, Y int
 }

m2 := make(map[Point]string)
m2[Point{1, 2}] = "Bod"

Ak sa pokúsite použiť rez alebo mapu ako kľúč, kompilátor vypíše chybu.