Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Go dilində, slices funksiyalara dəyər kimi ötürülür, lakin vacibdir ki, slices-in dəyəri, massivə işarə edən göstərici, uzunluğu və tutumu olan bir strukturdur. Bir slice dəyər kimi ötürüləndə, yalnız bu struktur kopyalanır, məlumat massivləri deyil.

Əgər funksiya, dəyər kimi ötürülmüş slice-i sıralayırsa və nəticəni geri qaytarmırsa, dəyişikliklər xaricdə də görünəcək, çünki slice içindəki göstərici eyni məlumat massivinə işarə edir.

Nümunə:

func sortSlice(s []int) {
    sort.Ints(s) // slice-i sıralayır
}

func main() {
    nums := []int{3, 1, 2}
    sortSlice(nums)
    fmt.Println(nums) // Çıxış: [1 2 3]
}

Beləliklə, funksiya daxilində sıralama, slice dəyər kimi ötürülsə də, yalnız slice strukturunun kopyalanması, məlumatların isə kopyalanmaması ilə, orijinal massiv dəyişməz.