Sobes.tech
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.