Sobes.tech
Senior

Какво е slice и как се различава от масив?

sobes.tech AI

Отговор от AI

В Go масивът (array) е структура с фиксиран размер, която съдържа елементи от един и същи тип. Размерът на масива се задава при обявяването и не може да бъде променян по време на изпълнение на програмата.

Slice е динамичен, променяем по размер срез на масив. Той представлява структура, която съдържа указател към масива, дължина и капацитет. Срезовете позволяват работа с подмножества на масива и автоматично се разширяват при необходимост.

Основни разлики:

  • Размер: масивът има фиксиран размер, slice — динамичен.
  • Прехвърляне: масивите се предават по стойност (копират се), срезовете — по референция (указател към масива).
  • Гъвкавост: slice може да се разширява с функцията append, масивът — не.

Пример:

var arr [3]int = [3]int{1, 2, 3} // масив с фиксиран размер

var s []int = arr[0:2] // slice, който сочи към част от масива

s = append(s, 4) // срезът се разширява, при необходимост се създава нов масив