Sobes.tech
Senior

Slice-ებში კაპასიტეტი რა არის და როგორ გამოიყენება?

sobes.tech AI

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

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

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

თუ append-ით ელემენტების დამატებისას სლაისის სიგრძე გადააჭარბებს მოცულობას, გამოყოფილი იქნება ახალი მასივი გაზრდილი მოცულობით, და მონაცემები გადაიწერება მასში.

მაგალითი:

s := make([]int, 2, 5) // სიგრძე 2, მოცულობა 5
fmt.Println(len(s)) // 2
fmt.Println(cap(s)) // 5

s = append(s, 1, 2, 3) // ახლა სიგრძე 5, მოცულობა 5

s = append(s, 4) // სიგრძე 6, მოცულობა გაიზარდა (მაგ. 10)

მოცულობა ეხმარება მეხსიერების ეფექტიან მართვაში, ამცირებს გამოყოფის რაოდენობას სლაისის ზრდის დროს.