Sobes.tech
Middle

Jaké datové typy lze použít jako klíče?

sobes.tech AI

Odpověď od AI

V jazyce Go mohou být klíče v mapě pouze typy, které podporují operaci porovnání (==). To je způsobeno tím, že pro hledání klíče v hashovací tabulce je nutné porovnávat klíče na rovnost.

Typy, které lze použít jako klíče:

  • Primitivní typy: int, float64, string, bool atd.
  • Ukazatele
  • Struktury, pokud jsou všechny jejich pole porovnatelné
  • Pole, pokud jsou prvky porovnatelné

Typy, které nelze použít jako klíče:

  • Řezové (slice)
  • Mapy (map)
  • Funkce

To je způsobeno tím, že tyto typy nepodporují porovnání pomocí ==.

Příklad:

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

// Struktura s porovnatelnými poli
 type Point struct {
     X, Y int
 }

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

Pokud se pokusíte použít řez nebo mapu jako klíč, kompilátor vypíše chybu.