Junior — Middle
Kāpēc, izmantojot map, elementu kārtība nav garantēta un šķiet nejauša?
sobes.tech AI
Atbilde no AI
Go iebūvētā struktūra map ir īstenota, izmantojot haštabulu, un elementu pārlūkošanas kārtība nav garantēta un var mainīties starp iterācijām. Tas ir tāpēc:
- Hašfunkcija sadala atslēgas kaudzēs, un kaudžu kārtība nav fiksēta.
- Drošības un atkarības no kārtības novēršanas nolūkos, no Go 1.0, map pārlūkošanas kārtība ir īpaši nejauši mainīta katrā iterācijā.
Tādēļ, pārlūkojot map, elementu kārtība šķiet nejauša un nedrīkst tikt izmantota programmas loģikā. Ja nepieciešams sakārtots izvads, atslēgas jāizlasa atsevišķi:
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)
for _, k := range keys {
fmt.Println(k, m[k])
}
Tādējādi, jūs saņemsiet elementus sakārtotā secībā.