Sobes.tech
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)))
}