Sobes.tech
Junior — Middle

Proqramın icrası zamanı yaddaşda segmentasiya adətən harada və necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, dilim (slice) üç sahədən ibarət olan məlumat quruluşudur: yaddaşda massivə işarə edən göstərici, uzunluq (len) və tutum (cap). Proqramın icrası zamanı, dilim yığında (əgər o yerli isə) saxlanılır və ona işarə edən massiv, vəziyyətə görə, yığımda və ya statik yaddaşda yerləşdirilir.

Bir dilim yaradıldıqda, məsələn, s := make([]int, 5, 10), 10 elementlik massiv yığımda ayrılır və dilim bu massivə başlanğıc göstərici, uzunluğu 5 və tutumu 10 olan göstərici ilə təmsil olunur. Bir dilimi funksiyaya ötürəndə, yalnız dilim strukturu (3 sahə) kopyalanır, bütün massiv yox, bu yaddaş səmərəliliyini artırır.

Nümunə:

s := []int{1, 2, 3}
// s - massivə işarə edən struktur [1,2,3], uzunluq=3, tutum=3

func appendValue(slice []int, val int) []int {
    return append(slice, val)
}

s = appendValue(s, 4)

Burada, append tutum çatışmazsa yeni massiv ayıra bilər və yeni dilim qaytara bilər.