Junior — Middle
İşarəçisiz nüsxəni funksiyaya ötürmək orijinal massivə təsir edərmi?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, dilim (slice) array-ə işarə edən, uzunluğu və tutumu olan bir quruluşdur. Bir funksiyaya göstəricisiz dilim verdikdə, dilimin özü kopyalanır, lakin əsas array kopyalanmır.
Bu, funksiyada dilimin elementlərində edilən dəyişikliklərin orijinal array-ə təsir edəcəyi deməkdir, çünki hər iki dilim eyni array-ə işarə edir. Ancaq, funksiyada dilimi (məsələn, yeni bir dilim təyin etməklə və ya uzunluğu ilə dəyişiklik etməklə) dəyişdirsəniz, bu dəyişikliklər funksiyanın xaricindəki dilimi təsir etməz.
Nümunə:
func modifySlice(s []int) {
s[0] = 100 // orijinal array-ı dəyişəcək
s = append(s, 200) // yerli dilimi dəyişəcək, xarici təsir etməz
}
func main() {
arr := []int{1, 2, 3}
modifySlice(arr)
fmt.Println(arr) // [100 2 3] çap edəcək
}
Xülasə: göstəricisiz dilim keçirmək, orijinal array elementlərinin dəyişdirilməsinə imkan verir, lakin dilimin özünü (uzunluq, göstərici) funksiyanın xaricində dəyişdirməyə imkan vermir.