Sobes.tech
Back to questions
Middle
3

Как устроен слайс в Go и чем отличается от массива?

Companies where asked
VKVK

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, скрывающий детали управления памятью.