Sobes.tech
Senior
18

В чём разница между массивом и слайсом в Go?

Companies where asked
Займиго

Answer from AI

sobes.tech AI

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

Слайс (slice) — это динамический, изменяемый по размеру тип, который представляет собой ссылку на последовательный участок массива. Слайс содержит указатель на первый элемент, длину и ёмкость.

Ключевые отличия:

  • Размер массива фиксирован, слайс — динамический.
  • Массив при передаче копируется, слайс — передаётся по ссылке на underlying array.
  • Слайс можно расширять (append), массив — нет.

Пример:

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

slice := arr[0:2] // слайс, ссылающийся на первые два элемента массива

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

Таким образом, слайсы удобны для работы с динамическими коллекциями, а массивы — для фиксированных наборов данных.