Как работает слайс в Go

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

Ответ

Слайс в Go — это динамическая оболочка над массивом, предоставляющая гибкость работы с последовательностями данных. Он состоит из трех компонентов: указателя на массив, длины (len) и емкости (cap).

Пример:

s := make([]int, 3, 5) // len=3, cap=5
s = append(s, 1)       // [0,0,0,1], len=4, cap=5

Ключевые моменты:

  • При добавлении элементов сверх cap создается новый массив (удвоение или 1.25×), и данные копируются.
  • Срезы (s[1:3]) ссылаются на тот же массив — изменения затрагивают оригинал.
  • nil-слайс имеет len=0, cap=0, но append работает с ним.

Осторожно:

a := []int{1, 2, 3}
b := a[:2]             // b[0] = 99 изменит и a[0]!