Как устроена структура слайса

«Как устроена структура слайса» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Слайс в Go — это структура данных, состоящая из трех полей:

  1. Указатель на массив (ptr) — хранит адрес первого элемента массива
  2. Длина (len) — текущее количество элементов
  3. Емкость (cap) — максимальное количество элементов без переаллокации
type slice struct {
    ptr *[]T
    len int
    cap int
}

Пример создания и модификации:

arr := [5]int{1,2,3,4,5}
s := arr[1:4] // len=3, cap=4 (от 1 до конца массива)
s = append(s, 6) // изменяет arr[4], len=4

При добавлении элементов сверх capacity создается новый массив (обычно с удвоенной capacity) и копируются данные. Исходный массив остается неизменным, если на него больше нет ссылок.