Sobes.tech
Middle

Кесектин кеңейгенде анын сыйымдылыгы кандай өзгөрөт?

sobes.tech AI

AIден жооп

Go-da, slice — bu arrayga ishorat qiluvchi, uzunligi va sig'imi bo'lgan tuzilma. append yordamida elementlar qo'shilganda, agar slice uzunligi uning hozirgi sig'imiga yetgan bo'lsa, xotira qayta taqsimlanadi: yangi, sig'imi oshirilgan array yaratiladi va ma'lumotlar unga ko'chiriladi.

Sig'imni o'zgartirish qoidalari qat'iy emas, lekin odatda:

  • Kichik slice'lar uchun (1024 elementgacha) sig'im ikki barobar oshiriladi.
  • Katta slice'lar uchun, o'sish konservativroq bo'ladi (taxminan 25% hozirgi sig'imdan).

Bu, yaddaşning ishlatilishi va taqsimlashlar soni o'rtasida muvozanatni ta'minlaydi.

Misol:

s := make([]int, 0, 2) // uzunligi 0, sig'imi 2
s = append(s, 1)        // uzunligi 1, sig'imi 2
s = append(s, 2)        // uzunligi 2, sig'imi 2
s = append(s, 3)        // uzunligi 3, sig'im oshadi, masalan, 4-ə

Shu tarzda, dilim sig'imi kengaytirganda, u eksponensial ravishda o'sadi, bu esa elementlar qo'shishning samaradorligini oshiradi.