Junior — Middle
როგორ შეიძლება გაზარდოთ ფუნქციას გადაცემული სეგმენტის ზომა პროგრამირების ენაში?
sobes.tech AI
პასუხი AI-სგან
Go ენის ფარგლებში, სლაისი (slice) არის სტრუქტურა, რომელიც შეიცავს მაჩვენებელს მასივზე, სიგრძეს და მოცულობას. თუ გსურთ გადაცემული სლაის ზომის გაზრდა, შეგიძლიათ შემდეგი გააკეთოთ:
- გადაუგზავნოთ სლაისი მნიშვნელობით, მაგრამ ფუნქციის შიგნით შექმნათ ახალი სლაისი გაზრდილი სიგრძით ან მოცულობით
appendფუნქციის გამოყენებით. - თუ გსურთ თავად სლაის შეცვლა (მაგალითად, სიგრძის გაზრდა) და გსურთ, რომ ცვლილებები გარედანაც იყოს ნაჩვენები, შეგიძლიათ გადაუგზავნოთ მაჩვენებელი სლაის (
*[]T), მაშინ ფუნქციის შიგნით შეგიძლიათ სლაისი გადაწეროთ.
მაგალითი სლაის გაზრდის შესახებ ფუნქციის შიგნით, ახალი სლაის დაბრუნებით:
func extendSlice(s []int, n int) []int {
// დაამატეთ n ნულოვანი ელემენტი
s = append(s, make([]int, n)...)
return s
}
func main() {
s := []int{1, 2, 3}
s = extendSlice(s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
თუ ფუნქცია უნდა შეცვალოს სლაისი უშუალოდ და არ დააბრუნოს, გამოიყენეთ მაჩვენებელი:
func extendSlicePtr(s *[]int, n int) {
*s = append(*s, make([]int, n)...)
}
func main() {
s := []int{1, 2, 3}
extendSlicePtr(&s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
ასე რომ, სლაის ზომის გაზრდისათვის, უნდა ან ახალი სლაისი დაბრუნოთ, ან მაჩვენებელი გადაუგზავნოთ.