Back to questions
VK
Middle
3
Как устроен слайс в Go и чем отличается от массива?
Companies where asked
Answer from AI
sobes.tech AI
В Go слайс — это структура, которая описывает последовательность элементов одного типа, но сама по себе не содержит данные, а лишь указывает на массив в памяти.
Слайс состоит из трёх компонентов:
- указатель на базовый массив,
- длина (количество элементов, доступных через слайс),
- ёмкость (максимальное количество элементов, которые можно вместить начиная с указателя).
Отличия слайса от массива:
- Массив — это фиксированного размера последовательность элементов, размер которой задаётся при объявлении и не меняется.
- Слайс — динамическая структура, которая может изменять длину (через append и другие операции).
- Массив передаётся по значению, а слайс — по ссылке на массив, что делает работу с ним более гибкой и эффективной.
Пример:
arr := [5]int{1, 2, 3, 4, 5} // массив фиксированного размера
slice := arr[1:4] // слайс с элементами {2, 3, 4}
slice = append(slice, 6) // слайс может расширяться, возможно выделение нового массива
Таким образом, слайс — это удобный и гибкий способ работать с последовательностями в Go, скрывающий детали управления памятью.