Middle
append fonksiyonu kullanıldığında dilimin boyutu ne kadar artar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Dilim boyutu farklı şekillerde artabilir, mevcut kapasite cap(slice)'a bağlı olarak:
- Yeterli olmayan kapasite durumunda: Yeni kapasite en az iki katına çıkar, eğer mevcut kapasite 1024'ten küçükse. Eğer 1024'ten büyükse, kapasite yaklaşık %25 artar, yeterli olana kadar devam eder. Daha sonra yukarı doğru ayarlanabilir.
- Yeterli kapasite durumunda: Dilim boyutu, eklenen öğelerin sayısı kadar artar ve kapasite değişmez.
// Yeterli kapasite olmadığında append davranışına örnek
s := make([]int, 0, 0) // boyut 0, kapasite 0
s = append(s, 1) // boyut 1, kapasite 1. (0 -> 1)
s = append(s, 2) // boyut 2, kapasite 2. (1 -> 2)
s = append(s, 3) // boyut 3, kapasite 4. (2 -> 4)
s = append(s, 4) // boyut 4, kapasite 4
s = append(s, 5) // boyut 5, kapasite 8. (4 -> 8)
s2 := make([]int, 0, 1025) // boyut 0, kapasite 1025
s2 = append(s2, make([]int, 500)...) // boyut 500, kapasite 1025 (yeterli)
s2 = append(s2, make([]int, 1000)...) // boyut 1500, yaklaşık kapasite 1025 + 1025*0.25 + epsilon
Kapasite artış algoritması runtime içinde bulunur ve Go sürümleri arasında değişebilir. Ancak genel kurallar (1024'e kadar iki katına çıkarma, sonra yaklaşık %25 artırma) korunur.