Основы Go
2026-02-26 16:56 Diff

В Go есть удобная операция слайсинг (slicing), которая используется для получения поднабора элементов из среза. С помощью конструкции [:] можно указать диапазон элементов, создавая новый срез, который ссылается на тот же базовый массив. При этом операция не копирует данные, а лишь формирует новое «окно» на существующий массив.

Как работает слайсинг [:]

Синтаксис:

  • начало — индекс, с которого начинается срез (включительно).
  • конец — индекс, на котором срез заканчивается (не включительно).
  • Если начало не указано — берется 0.
  • Если конец не указан — берется len(s).

Примеры

Отрезание элементов

Срезы позволяют легко отбросить первый или последний элемент:

Вложенные срезы

Так как [:] возвращает новый срез, можно использовать его в цепочках:

Важно: все срезы указывают на один и тот же базовый массив. Изменение элемента в одном срезе повлияет на другие.

Выход за пределы

Если задать границы, выходящие за пределы длины среза, будет паника времени выполнения:

Использование [:] для "удаления" элементов

В Go нет встроенной функции для удаления элементов из среза, но [:] позволяет легко получить новый срез без нужных элементов.

Удаление первого элемента

Удаление последнего элемента

Удаление диапазона элементов

Можно отбросить несколько элементов, используя append() вместе с [:]:

Конструкция [:] в таких примерах не копирует данные, а создаёт новый срез с нужным диапазоном, сохраняя общую память с исходным массивом.

Кратко