Ответ
Слайс в 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]!