Sobes.tech
Junior

Go-da dilimlər və massivlər arasında əsas fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Sıralar, dinamik olaraq dəyişdirilə bilən massivlərin görünüşləridir.

Xüsusiyyət Array Slice
Ölçü Sabit, yaradılarkən müəyyən edilir Dinamik, dəyişə bilər
Tip [n]T (burada n ölçü, T tipdir) []T (burada T tipdir)
Funksiyalara ötürülməsi Qiymət ilə (kopya) Alt array-ə referansla, head, lencap ötürülür (əslində, bu sahələrin kopyalarını ehtiva edən yeni SliceHeader strukturu yaradılır)
Yaradılması var a [5]int və ya b := [3]string{"a", "b", "c"} var s []int və ya t := []int{1, 2, 3} və ya u := make([]int, 5)
Performans Sabit ölçü səbəbindən daha əvvəlcədən proqnozlaşdırıla bilər, kiçik ölçülərdə üstün ola bilər Ölçü dəyişikliklərində əlavə xərclər ola bilər (alt array-ın yenidən ayrılması)
// Array nümunəsi
var arr [3]int = [3]int{1, 2, 3}

// Array-dən yaradılan slice nümunəsi
slice := arr[1:] // slice {2, 3}

// Slice yaradılması nümunəsi
s := []int{10, 20, 30} // alt array {10, 20, 30}, uzunluğu = 3, kapasitəsi = 3

// Slice-ə dəyişiklik
s = append(s, 40) // indi s {10, 20, 30, 40}. Əgər kifayət qədər kapasitə yoxdursa, yeni alt array yaradılır, uzunluğu = 4, kapasitə = 6 (adətən iki qat artırılır).

// Slice elementinin dəyişdirilməsi alt array-ı dəyişir
slice[0] = 99 // arr indi {1, 99, 3}
fmt.Println(arr)