Back to questions
Senior
4
Что такое slice и чем отличается от массива?
Companies where asked
Магнум
Answer from AI
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 расширяется, при необходимости создаётся новый массив