Sobes.tech
Junior — Middle

Go tilida massivlar bilan ishlashda slicesning sig‘imini hisobga olish nima uchun muhim?

sobes.tech AI

AIdan javob

Go tilida, slices dinamik tuzilmalar bo'lib, ular indeksga ega bo'lgan massivga, uzunlikka va sig'imga (capacity) ega. Slice sig'imi, yangi xotira ajratmasdan, qancha elementni qabul qilishini belgilaydi.

Sig'imni hisobga olish muhim, chunki:

  • append yordamida elementlar qo'shilganda, agar slice uzunligi sig'imdan oshsa, yangi, kengaytirilgan sig'imga ega massiv ajratiladi va ma'lumotlar ko'chiriladi, bu esa ishlash tezligiga ta'sir qiladi.
  • Sig'imni bilish, xotirani samarali boshqarish va ortiqcha ajratishni oldini olish imkonini beradi.

Misol:

s := make([]int, 0, 5) // uzunligi 0, sig'imi 5
fmt.Println(len(s), cap(s)) // 0 5

s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5

s = append(s, 6) // sig'im oshdi, yangi massiv ajratiladi
fmt.Println(len(s), cap(s)) // 6 10 (taxminan)

Shunday qilib, sig'imni nazorat qilish bilan slice'lar bilan ishlashni optimallashtirish mumkin.