Sobes.tech
Junior — Middle

როგორ გადაეცემა სლაისი ფუნქციას პროგრამირების ენაში?

sobes.tech AI

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

Go ენის ფარგლებში, სლაისი გადაეცემა ფუნქციას მნიშვნელობით, მაგრამ სლაისი შეიცავს მაჩვენებელს მასივზე, ასევე მისი სიგრძე და მოცულობა. ეს ნიშნავს, რომ სლაისის გადაცემისას, სლაისის სტრუქტურა იკოპირება, მაგრამ მასზე მიმაგრებული მასივის მონაცემები — არა.

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

მაგალითი:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // შეცვლის ორიგინალური მასივის ელემენტს
    s = append(s, 200) // შეცვლის ადგილობრივ სლაის, გარე არ შეცვლით
}

func main() {
    s := []int{1, 2, 3}
    modifySlice(s)
    fmt.Println(s) // გამოიტანს: [100 2 3]
}

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