Sobes.tech
Junior — Middle

Jaká jsou omezení a vlastnosti používání klíčů ve struktuře dat map?

sobes.tech AI

Odpověď od AI

V Go musí klíče v mapě splňovat určité požadavky:

  • Klíč musí být srovnatelný: To znamená, že typ klíče musí podporovat operace porovnání == a !=. Například základní typy (int, string, bool), ukazatele, struktury a pole, pokud jsou všechny jejich pole srovnatelná.

  • Nelze použít jako klíče řezy, mapy a funkce: Tyto typy nejsou srovnatelné a způsobí chybu při kompilaci.

  • Vlastnosti:

    • Struktury mohou být klíči, pokud jsou všechna jejich pole srovnatelná.
    • Pokud struktura obsahuje pole typu slice nebo mapu, nemůže být klíčem.
  • Výkon: Použití velkých struktur jako klíčů může být neefektivní kvůli kopírování.

Příklad:

m := make(map[string]int) // string je platný klíč

// Neplatný klíč:
// m2 := make(map[[]int]string) // chyba při kompilaci

// Struktura s srovnatelnými poli:
 type Point struct { X, Y int }
 m3 := make(map[Point]string)
 m3[Point{1,2}] = "A"

Proto je při výběru klíče důležité zvážit jeho srovnatelnost a neměnnost.