Назад к вопросам
OZON
Купер
МТС Digital
Junior — Middle
82
Можете объяснить, как реализован и работает динамический массив в языке Go?
Компании, где спрашивали
Lamoda Tech
Rubytech
Ответ от нейросети
sobes.tech AI
В языке Go динамический массив реализован через тип slice — это структура, которая содержит указатель на массив, длину и ёмкость.
Когда создаётся срез, он указывает на базовый массив фиксированного размера. Если при добавлении элементов длина среза достигает ёмкости, создаётся новый массив с увеличенной ёмкостью (обычно в 2 раза больше), и данные копируются в него. Это позволяет эффективно управлять памятью и динамически расширять массив.
Пример:
var s []int // пустой срез
s = append(s, 1) // добавляем элемент
s = append(s, 2, 3) // добавляем несколько элементов
fmt.Println(s) // [1 2 3]
Здесь append автоматически расширяет базовый массив при необходимости, скрывая детали управления памятью от разработчика.