Junior — Middle
Map kullanırken neden öğelerin sırası garanti edilmez ve rastgele gibi görünür?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde yerleşik yapı olan map, bir karma tablosu kullanılarak uygulanır ve öğelerin dolaşım sırası garanti edilmez ve yinelemeler arasında değişebilir. Bu durumun nedeni:
- Karma fonksiyonu anahtarları kovuklara dağıtır ve kovukların sırası sabit değildir.
- Güvenlik ve sıralamaya bağlılığı önlemek için, Go 1.0'dan itibaren, map üzerinde dolaşma sırası özellikle her yinelemede rastgele hale getirilir.
Bu nedenle, bir map üzerinde dolaşırken, öğelerin sırası rastgele görünür ve program mantığında kullanılmamalıdır. Sıralı çıktı gerekiyorsa, anahtarlar ayrı ayrı sıralanmalıdı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])
}
Bu şekilde, öğeleri sıralı sırayla alırsınız.