Sobes.tech
Middle

append funksiyasından istifadə edildikdə dilimin ölçüsü nə qədər artır?

sobes.tech Süni İntellekt

AI-dan cavab

Slice yüksələ bilər müxtəlif yollarla, mövcud tutum cap(slice)-a əsasən:

  1. Əgər tutum kifayət deyilsə: Yeni tutum ən azı mövcud tutumun iki qatına bərabər olacaq, əgər bu 1024-dən kiçikdirsə. Əgər 1024-dən böyükdürsə, tutum təxminən 25% artırılacaq, kifayət qədər olana qədər. Sonra yuxarı tənzimlənə bilər.
  2. Əgər tutum kifayət edirsə: Slice-in ölçüsü əlavə olunan elementlərin sayına bərabər artır, və tutum dəyişmir.
// Kifayət qədər tutum olmayan zaman append nümunəsi
s := make([]int, 0, 0) // ölçü 0, tutum 0
s = append(s, 1)       // ölçü 1, tutum 1. (0 -> 1)
s = append(s, 2)       // ölçü 2, tutum 2. (1 -> 2)
s = append(s, 3)       // ölçü 3, tutum 4. (2 -> 4)
s = append(s, 4)       // ölçü 4, tutum 4
s = append(s, 5)       // ölçü 5, tutum 8. (4 -> 8)

s2 := make([]int, 0, 1025) // ölçü 0, tutum 1025
s2 = append(s2, make([]int, 500)...) // ölçü 500, tutum 1025 (kifayət edir)
s2 = append(s2, make([]int, 1000)...) // ölçü 1500, təxminən 1025 + 1025*0.25 + epsilon

Xüsusi tutum artım algoritmi runtime daxilində yerləşir və Go versiyalarına görə dəyişə bilər. Ancaq ümumi qaydalar (1024-ə qədər ikiqat artırma, sonra təxminən 25% artırma) saxlanılır.