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) // слайсът се разширява, възможно е да се създаде нов основен масив

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