Senior
17
В чём разница между массивом и слайсом в Go?
Компании, где спрашивали
Займиго
Ответ от нейросети
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
Таким образом, слайсы удобны для работы с динамическими коллекциями, а массивы — для фиксированных наборов данных.