Назад к вопросам
Senior
3
Что такое slice и чем отличается от массива?
Компании, где спрашивали
Магнум
Ответ от нейросети
sobes.tech AI
В Go массив (array) — это структура фиксированного размера, которая содержит элементы одного типа. Размер массива задаётся при объявлении и не может изменяться в процессе выполнения программы.
Slice — это динамический, изменяемый по размеру срез массива. Он представляет собой структуру, которая содержит указатель на массив, длину и ёмкость. Срезы позволяют работать с подмножествами массива и автоматически расширяться при необходимости.
Основные отличия:
- Размер: массив имеет фиксированный размер, slice — динамический.
- Передача: массивы передаются по значению (копируются), срезы — по ссылке (указатель на массив).
- Гибкость: slice можно расширять с помощью функции
append, массив — нет.
Пример:
var arr [3]int = [3]int{1, 2, 3} // массив фиксированного размера
var s []int = arr[0:2] // slice, ссылающийся на часть массива
s = append(s, 4) // slice расширяется, при необходимости создаётся новый массив