Junior
Úgy gondolod, hogy a térképek (map) Go-ban rendezettek lesznek?
sobes.tech MI
Válasz az MI-től
Alapértelmezés szerint a Go-ban a térképen való iterálás nem garantálja az elemek sorrendjét. A sorrend minden bejárásnál változhat. Ez annak köszönhető, hogy a térképek belső adatstruktúrái így vannak megvalósítva, hogy magas teljesítményt érjenek el.
Azonban több módszer is létezik a rendezett bejárás elérésére:
-
Kulcsok rendezése: Szerezze be a térkép összes kulcsát, rendezze őket, majd a rendezett kulcsokat használva járja be a térképet.
// Kulcsok rendezésének példája 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) // Sztringek rendezése, létezik sort.Ints is. for _, k := range keys { fmt.Println(k, m[k]) } } -
Olyan adatstruktúrák használata, amelyek garantálják a sorrendet: Ha a sorrend kritikus, más adatstruktúrákat használhat, mint például egy rendezett kulcs-érték pár lista.
Így a Go alapértelmezett térképei nem rendezettek, de további műveletekkel elérhető a sorrend.