Agar ko'rsatkichsiz nusxani funktsiyaga o'tkazish, asl massivga ta'sir qiladimi?
sobes.tech AI
AIdan javob
In Go, bir dilim (slice), bir diziye işaret eden bir gösterge, uzunluk ve kapasite içeren bir yapıdır. Bir fonksiyona gösterge olmadan bir dilim geçirirken, dilimin kendisi kopyalanır, ancak altta yatan dizi kopyalanmaz.
Bu, fonksiyon içindeki dilim öğelerinde yapılan değişikliklerin, her ikisi de aynı diziye işaret ettiğinden, orijinal diziyi etkileyeceği anlamına gelir. Ancak, fonksiyon içinde dilimi (örneğin, yeni bir dilim atayarak veya uzunluğunu değiştirerek) değiştirirseniz, bu değişiklikler fonksiyon dışındaki dilimi etkilemez.
Örnek:
func modifySlice(s []int) {
s[0] = 100 // orijinal diziyi değiştirecek
s = append(s, 200) // yerel dilimi değiştirecek, dışarıyı etkilemeyecek
}
func main() {
arr := []int{1, 2, 3}
modifySlice(arr)
fmt.Println(arr) // [100 2 3] yazdırır
}
Özetle: dilimi gösterge olmadan geçirmek, orijinal dizinin öğelerini değiştirmeye izin verir, ancak dilimin kendisini (uzunluk, gösterge) fonksiyon dışında değiştirmeye izin vermez.