პროგრამის შესრულების დროს სად და როგორ ხორციელდება ჩვეულებრივ სლაისში მეხსიერებაში?
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 შეუძლია ახალი მასივი გამოყოს, თუ მოცულობა არ არის საკმარისი, და დააბრუნოს ახალი სლაისი, მაჩვენებლით ამ მასივზე.