> Какие ключевые особенности типа slice в Go (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: InDrive

Стек: Go

> Пример ответа

Slice в Go - это динамическая структура данных, построенная поверх массива. Ключевые особенности:

  • Динамический размер: slice может расти и сжиматься в отличие от массива фиксированной длины.
  • Ссылочный тип: slice содержит указатель на базовый массив, длину (len) и ёмкость (cap). При передаче в функцию изменения в элементах отражаются на исходном slice.
  • Ёмкость (capacity): это количество элементов, которое может вместить базовый массив без перераспределения. При превышении ёмкости Go автоматически выделяет новый массив большего размера (обычно в 2 раза).
  • Создание: через литерал []T{}, make([]T, len, cap) или срез массива arr[low:high].
  • Нулевое значение: nil - это slice без базового массива, с длиной и ёмкостью 0. Он безопасен для append.
  • Операции: append добавляет элементы, copy копирует между slice, срезы s[i:j] создают новый slice, разделяющий память с исходным.
  • Осторожность: из-за разделения памяти изменение через один slice может повлиять на другой, если они ссылаются на один массив.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью