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
}