Sobes.tech
Junior

Goда slices жана массивдердин негизги айырмасы эмнеде?

sobes.tech AI

AIден жооп

Слайс — бул массивдердин динамикалык өзгөрүлмө көрүнүшү.

Өзгөчөлүк Массив (Array) Слайс (Slice)
Өлчөм Туура, түзүлгөндө аныкталат Динамик, өзгөртүлүшү мүмкүн
Тип [n]T (мында n өлчөмү, T тип) []T (мында T тип)
Функцияларга өткөрүү Баалуулук менен (копиясы) Төмөнкү массивге шилтеме аркылуу, head, len жана cap өткөрүлөт (чындыгында, булардын көчүрмөлөрү менен жаңы SliceHeader түзүлөт)
Түзүү var a [5]int же b := [3]string{"a", "b", "c"} var s []int же t := []int{1, 2, 3} же u := make([]int, 5)
Аткаруу Туура өлчөмү менен көбүрөөк алдын ала болжолдонгон, кичинекей өлчөмдөрдө пайдалуу болушу мүмкүн Өлчөм өзгөртүлгөндө кошумча чыгымдар болушу мүмкүн (төмөнкү массив кайра бөлүштүрүлөт)
// Массив мисалы
var arr [3]int = [3]int{1, 2, 3}

// Массивтен түзүлгөн слайс мисалы
slice := arr[1:] // слайс {2, 3}

// Слайс түзүү мисалы
s := []int{10, 20, 30} // негизги массив {10, 20, 30}, узундук = 3, капаситет = 3

// Слайс өзгөртүү
s = append(s, 40) // азыр s {10, 20, 30, 40}. Эгер капаситет жетишсиз болсо, жаңы негизги массив түзүлөт, узундук = 4, капаситет = 6 (адатта эки эсеге көбөйтүлөт)

// Элементти өзгөртүү слайста негизги массивди өзгөртөт
slice[0] = 99 // arr азыр {1, 99, 3}
fmt.Println(arr)