Junior
Myslíš, že mapy v Go budou seřazené?
sobes.tech AI
Odpověď od AI
Ve výchozím nastavení nezaručuje iterace přes mapu v Go pořadí prvků. Pořadí se může při každém průchodu měnit. To je způsobeno tím, jak jsou implementovány vnitřní datové struktury mapy, aby bylo dosaženo vysoké výkonnosti.
Existuje však několik způsobů, jak získat seřazený průchod:
-
Seřadit klíče: Získat všechny klíče mapy, seřadit je a poté mapu projít pomocí seřazených klíčů.
// Příklad seřazení klíčů package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "b": 2, "a": 1, "c": 3, } keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } sort.Strings(keys) // Seřadit řetězce, existuje i sort.Ints atd. for _, k := range keys { fmt.Println(k, m[k]) } } -
Použití datových struktur, které garantují pořadí: Pokud je pořadí kritické, lze místo map použít jiné datové struktury nebo implementovat vlastní. Například seznam párů klíč-hodnota, který je udržován v seřazeném stavu.
Takto standardní mapy v Go nejsou seřazené, ale pořadí lze dosáhnout pomocí dalších operací.