Введение в срезы в Go
Срез хранит ряд значений, и этот ряд можно удлинять. Как и массив, он держит несколько однотипных чисел под одним именем, но не требует заранее фиксировать окончательный размер в типе. Когда данных становится больше, в конец можно поставить новые элементы без нового объявления с другой длиной.
Массив с длиной в типе удобен, когда мест ровно столько, сколько нужно навсегда: три оценки, пять координат. Срез подходит для списков, которые растут по ходу работы: очередь чисел, набор строк, промежуточные результаты перебора. Одно имя остается, а содержимое меняет число элементов.
Доступ к элементу у среза такой же, как у массива: номер в квадратных скобках, нумерация с нуля. Длина показывает, сколько элементов сейчас видно, а отдельное число емкость говорит, сколько места зарезервировано под будущие добавления. Вырезка берет участок без копирования всего ряда.
В разделе опираемся на фиксированные массивы, циклы, условия и строки с рунами, которые читатель уже знает. Пройдем создание и пустые варианты, добавление и удаление, общую память с вырезкой, копирование, сортировку и обход, а в конце закрепим короткой практикой.