Sobes.tech
Senior

Каква е разликата между масив и слайс в Go?

sobes.tech AI

Отговор от AI

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

Слайсът (slice) е динамичен, променяем по размер тип, който представлява препратка към последователен участък от масив. Един слайс съдържа указател към първия елемент, дължина и капацитет.

Ключови разлики:

  • Размерът на масива е фиксиран, при слайса е динамичен.
  • При предаване, масивът се копира, а слайсът се предава като препратка към основния масив.
  • Слайсът може да бъде разширен (append), масивът — не.

Пример:

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

slice := arr[0:2] // слайс, който реферира към първите два елемента на масива

slice = append(slice, 4) // слайсът се разширява, възможно е да се създаде нов основен масив

По този начин, слайсовете са полезни за работа с динамични колекции, а масивите — за фиксирани набори от данни.