Sobes.tech
Junior — Middle

Funkciya məlumat ötürərkən: yaddaş istifadəsi baxımından daha səmərəli olan nədir — massiv və ya dilim?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da massivlər sabit ölçüyə malikdir və tamamilə yaddaşda saxlanılır, halbuki dilimlər (slices) göstərici, uzunluq və tutumdan ibarət strukturdur.

Yaddaş istifadəsi baxımından:

  • Massiv: bütün elementlər üçün dəqiq yaddaş tutar, ölçüsü tərtib zamanı məlumdur.
  • Slice: öz-özünə az yaddaş tutar (üç söz: göstərici, uzunluq, tutum), lakin məlumatları saxlayan array-ə işarə edir.

Funkciyə ötürülərkən:

  • Əgər massiv ötürülərsə, tam surət çıxarılır, bu böyük massivlər üçün yaddaş və vaxt baxımından baha başa gələ bilər.
  • Əgər slice ötürülərsə, yalnız slice strukturu (göstərici + uzunluq + tutum) surət çıxarılır və məlumatlar orijinal array-də qalır, yəni məlumatların surəti çıxmır.

Bu səbəbdən, slice ötürülməsi yaddaş və performans baxımından daha səmərəlidir, xüsusən böyük məlumat dəstləri üçün.

Nümunə:

func processArray(arr [1000]int) {
    // bütün array surət çıxarılır
}

func processSlice(s []int) {
    // yalnız slice strukturu surət çıxarılır
}

func main() {
    var a [1000]int
    processArray(a)    // baha
    processSlice(a[:]) // səmərəli
}