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)))
}