Middle
Kəsimin genişlənməsi zamanı onun tutumu necə dəyişir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, dilim (slice) array-ə işarə edən, uzunluğu və tutumu olan bir quruluşdur. append istifadə edilərək elementlər əlavə olunduqda, əgər dilimin uzunluğu onun hazırkı tutumuna çatarsa, yaddaş yenidən ayrılır: artırılmış tutuma malik yeni array yaradılır və məlumatlar ona köçürülür.
Tutumu dəyişdirmə qaydaları sərt şəkildə müəyyən edilməyib, amma ümumiyyətlə:
- Kiçik dilimlər üçün (1024 elementə qədər) tutum ikiqat artır.
- Böyük dilimlər üçün artım daha ehtiyatlı olur (təxminən 25% hazırkı tutumdan).
Bu, yaddaşın istifadəsi və təyinatların tezliyi arasında balans yaratmağa imkan verir.
Nümunə:
s := make([]int, 0, 2) // uzunluğu 0, tutumu 2
s = append(s, 1) // uzunluğu 1, tutumu 2
s = append(s, 2) // uzunluğu 2, tutumu 2
s = append(s, 3) // uzunluğu 3, tutum artır, məsələn, 4-ə
Bu şəkildə, dilimin tutumu genişlədikcə eksponensial şəkildə artır, bu da elementlərin əlavə edilməsinin performansını optimallaşdırır.