Slices internal (слайсы внутри)
Срез — это дескриптор сегмента массива. Он состоит из указателя на массив, длины сегмента и его емкости — максимальной длины сегмента.
Наша переменная s, созданная ранее с помощью make([]byte, 5), имеет структуру, указанную в схеме ниже.
Когда мы создаем под слайс s, наблюдай за изменениями в структуре данных среза и их отношением к базовому массиву.
Слайс не копирует данные среза. Он создает новое значение среза, указывающее на исходный массив. Это делает операции срезов такими же эффективными, как манипулирование индексами массива. Следовательно, изменение элементов (а не самого среза) повторного среза изменяет элементы исходного среза.
Ранее мы нарезали s на длину короче, чем его емкость. Мы можем увеличить s до его вместимости, снова нарезав его.
Срез не может быть увеличен за пределы его емкости. Попытка сделать это через индексы вызовет панику во время выполнения, как и при индексировании за пределами среза или массива. Точно так же срезы не могут быть повторно срезаны ниже нуля для доступа к более ранним элементам в массиве.