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.