Da li misliš da će mape (map) u Go biti sortirane?
sobes.tech АИ
Одговор од АИ
По подразумеванию, итерация по map у Go не гарантује редослед елемената. Редослед може да се мења при сваком проласку. То је због начина на који су имплементиране унутрашње структуре података за map, како би се постигла висока перформанса.
Међутим, постоји неколико начина да се добије сортирани пролаз:
-
Сортирање кључева: Добити све кључеве map-а, сортирати их и затим пролазити кроз map користећи сортиране кључеве.
// Пример сортирања кључева 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) // Сортирање стрингова, постоји и sort.Ints, итд. for _, k := range keys { fmt.Println(k, m[k]) } } -
Користите структуре података које гарантују редослед: Ако је редослед критичан, можете користити друге структуре података уместо map-ова или реализовати своју. На пример, листа парова кључ-вредност која се одржава у сортираном стању.
Тако, стандардне map-ове у Go-у нису сортиране, али редослед може бити постигнут помоћу додатних операција.