Sobes.tech
Junior — Middle

პროგრამის შესრულების დროს სად და როგორ ხორციელდება ჩვეულებრივ სლაისში მეხსიერებაში?

sobes.tech AI

პასუხი AI-სგან

Go ენაში, სლაისი მონაცემთა სტრუქტურაა, რომელიც შეიცავს სამ ველს: მეხსიერებაში მასივის მაჩვენებელს, სიგრძეს (len) და მოცულობას (cap). პროგრამის შესრულების დროს, სლაისი ინახება სტეკზე (თუ ის ადგილობრივია), ხოლო მასივი, რომელსაც ის მიუთითებს, განთავსებულია ხეზე ან სტატიკურ მეხსიერებაში, სიტუაციიდან გამომდინარე.

როდესაც სლაისი შეიქმნება, მაგალითად s := make([]int, 5, 10), გამოყოფილი იქნება 10 ელემენტიანი მასივი ხეზე, ხოლო სლაისი შეიცავს მაჩვენებელს ამ მასივის დასაწყისზე, სიგრძე 5 და მოცულობა 10. სლაის გადაცემისას ფუნქციას, მხოლოდ სლაის სტრუქტურა (3 ველი) იწერება, არა მთელი მასივი, რაც მეხსიერების ეფექტურია.

მაგალითი:

s := []int{1, 2, 3}
// s - სტრუქტურა, მაჩვენებლით [1,2,3], სიგრძე=3, მოცულობა=3

func appendValue(slice []int, val int) []int {
    return append(slice, val)
}

s = appendValue(s, 4)

აქ, append შეუძლია ახალი მასივი გამოყოს, თუ მოცულობა არ არის საკმარისი, და დააბრუნოს ახალი სლაისი, მაჩვენებლით ამ მასივზე.