Junior — Middle
Xəritə istifadə edərkən elementlərin sırası niyə təmin edilmir və təsadüfi görünür?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da daxili quruluş olan map, hash-cədvəl istifadə edilərək həyata keçirilir və elementlərin keçid sırası zəmanət verilmir və iterasiyalar arasında dəyişə bilər. Bu, aşağıdakı səbəblərə görədir:
- Hash funksiyası açarları kovuklara paylayır və kovukların sırası sabit deyil.
- Təhlükəsizlik və sıralamaya bağlılığı önləmək üçün, Go 1.0-dan başlayaraq, map üzərində keçid sırası xüsusi olaraq hər iterasiyada təsadüfi şəkildə dəyişdirilir.
Bu səbəbdən, map üzərində keçid zamanı elementlərin sırası təsadüfi görünür və proqram məntiqində istifadə edilməməlidir. Əgər sıralanmış çıxış tələb olunursa, açarları ayrıca sıralamaq lazımdır:
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])
}
Beləliklə, elementləri sıralanmış qaydada əldə edəcəksiniz.