Sobes.tech
Junior — Middle

Slice uzunligini uning xotiradagi haqiqiy o'lchamiga qanday o'tkaziladi?

sobes.tech AI

AIdan javob

Go tilida, slice — bu tuzilma bo‘lib, quyidagilarni o‘z ichiga oladi:

  • massivga ko‘rsatkich,
  • uzunlik (len),
  • sig‘im (cap).

Slice ning uzunligi — u ichida mavjud bo‘lgan elementlar soni, va haqiqiy xotira o‘lchami sig‘im va element turlarining o‘lchamiga bog‘liq.

Masalan, agar sizda int tipidagi slice bo‘lsa (odatda 8 bayt har bir element uchun) va uzunligi 5, sig‘imi esa 10 bo‘lsa, xotirada 10 ta element uchun joy ajratilgan (80 bayt), garchi uzunligi 5 bo‘lsa ham.

Xotirada slice o‘lchami = sizeof( element ) * cap.

Demonstratsiya kodi:

package main
import (
    "fmt"
    "unsafe"
)
func main() {
    s := make([]int, 5, 10)
    fmt.Println("len:", len(s))
    fmt.Println("cap:", cap(s))
    fmt.Println("size in bytes:", unsafe.Sizeof(s[0])*uintptr(cap(s)))
}