Sobes.tech
Junior — Middle

Bu dilim fonksiyon çağrılırken, bu dilim içindeki hangi veriler argüman olarak geçirilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go diliminde, dilim bir yapıdır ve üç alan içerir: bir dizi göstericisi, uzunluk ve kapasite. Bir dilim fonksiyona geçirildiğinde, sadece bu yapı kopyalanır, tüm veri dizisi değil.

Yani, bir fonksiyon çağrıldığında, dilim değer olarak geçirilir, ancak sadece meta veriler (gösterici, uzunluk, kapasite) kopyalanır, dizinin kendisi değil. Bu, fonksiyon içinde dilimin aynı temel diziye işaret ettiği ve fonksiyon içindeki dilim öğelerindeki değişikliklerin dışarıda görüleceği anlamına gelir.

Örnek:

func modify(slice []int) {
    slice[0] = 100 // ilk öğeyi değiştirir
}

func main() {
    s := []int{1, 2, 3}
    modify(s)
    fmt.Println(s) // [100 2 3] yazdırır
}

Bu nedenle, bir dilim fonksiyonuna geçirilirken, sadece dilim yapısının üç alanı kopyalanır, dizinin verileri ise paylaşılır kalır.