Myslíš si, že mapy v Go budú zoradené?
sobes.tech AI
Odpoveď od AI
Podľa predvoleného nastavenia neznamená iterácia cez mapu v Go poradie prvkov. Poradie sa môže meniť pri každom prechode. Je to spôsobené spôsobom, akým sú implementované vnútorné dátové štruktúry pre mapu, aby sa dosiahla vysoká výkonnosť.
Existuje však niekoľko spôsobov, ako získať zoradený prechod:
-
Zoradiť kľúče: Získať všetky kľúče mapy, zoradiť ich a potom prejsť mapu pomocou zoradených kľúčov.
// Príklad zoradenia kľúčov 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) // Zoradiť reťazce, existuje aj sort.Ints, atď. for _, k := range keys { fmt.Println(k, m[k]) } } -
Použitie dátových štruktúr, ktoré garantujú poradie: Ak je poradie kritické, môžete použiť iné dátové štruktúry namiesto map alebo implementovať vlastnú. Napríklad, zoznam párov kľúč-hodnota, ktorý sa udržiava v zoradenom stave.
Takto štandardné mapy v Go nie sú zoradené, ale poradie je možné dosiahnuť pomocou ďalších operácií.