Junior — Middle
როგორ ხდება სლაისის სიგრძის გადაქცევა მისი მეხსიერებაში რეალურ ზომად?
sobes.tech AI
პასუხი AI-სგან
Go-ში, სლაისი (slice) არის სტრუქტურა, რომელიც შეიცავს:
- მაჩვენებელს მასივზე,
- სიგრძეს (len),
- მოცულობას (cap).
სლაისის სიგრძე არის ელემენტების რაოდენობა, რომელიც მას აქვს, ხოლო რეალური ზომა მეხსიერებაში დამოკიდებულია მოცულობაზე და ელემენტების ტიპის ზომაზე.
მაგალითად, თუ გაქვთ int ტიპის სლაისი (საშუალოდ 8 ბაიტი თითო ელემენტზე) სიგრძით 5 და მოცულობით 10, მაშინ მეხსიერებაში გამოყოფილია ადგილი 10 ელემენტისთვის (80 ბაიტი), მიუხედავად იმისა, რომ სიგრძე 5ა.
სლაისის ზომა მეხსიერებაში = sizeof(ელემენტი) * cap.
დამოწმების კოდი:
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)))
}