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]
}
Այսպիսով, սլայսը փոխանցվում է արժեքով, բայց ներքին ցուցիչի շնորհիվ, տարրերի փոփոխությունները տեսանելի են ֆունկցիայի դուրս։