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.