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) // слайсът се разширява, възможно е да се създаде нов основен масив
По този начин, слайсовете са полезни за работа с динамични колекции, а масивите — за фиксирани набори от данни.