0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В Go есть удобная операция слайсинг (slicing), которая используется для получения поднабора элементов из среза. С помощью конструкции [:] можно указать диапазон элементов, создавая новый срез, который ссылается на тот же базовый массив. При этом операция не копирует данные, а лишь формирует новое "окно" на существующий массив.</p>
1
<p>В Go есть удобная операция слайсинг (slicing), которая используется для получения поднабора элементов из среза. С помощью конструкции [:] можно указать диапазон элементов, создавая новый срез, который ссылается на тот же базовый массив. При этом операция не копирует данные, а лишь формирует новое "окно" на существующий массив.</p>
2
<h2>Как работает слайсинг [:]</h2>
2
<h2>Как работает слайсинг [:]</h2>
3
<p>Синтаксис:</p>
3
<p>Синтаксис:</p>
4
<ul><li>начало - индекс, с которого начинается срез (включительно).</li>
4
<ul><li>начало - индекс, с которого начинается срез (включительно).</li>
5
<li>конец - индекс, на котором срез заканчивается (не включительно).</li>
5
<li>конец - индекс, на котором срез заканчивается (не включительно).</li>
6
<li>Если начало не указано - берется 0.</li>
6
<li>Если начало не указано - берется 0.</li>
7
<li>Если конец не указан - берется len(s).</li>
7
<li>Если конец не указан - берется len(s).</li>
8
</ul><h2>Примеры</h2>
8
</ul><h2>Примеры</h2>
9
<h2>Отрезание элементов</h2>
9
<h2>Отрезание элементов</h2>
10
<p>Срезы позволяют легко отбросить первый или последний элемент:</p>
10
<p>Срезы позволяют легко отбросить первый или последний элемент:</p>
11
<h2>Вложенные срезы</h2>
11
<h2>Вложенные срезы</h2>
12
<p>Так как [:] возвращает новый срез, можно использовать его в цепочках:</p>
12
<p>Так как [:] возвращает новый срез, можно использовать его в цепочках:</p>
13
<p>Важно: все срезы указывают на один и тот же базовый массив. Изменение элемента в одном срезе повлияет на другие.</p>
13
<p>Важно: все срезы указывают на один и тот же базовый массив. Изменение элемента в одном срезе повлияет на другие.</p>
14
<h2>Выход за пределы</h2>
14
<h2>Выход за пределы</h2>
15
<p>Если задать границы, выходящие за пределы длины среза, будет паника времени выполнения:</p>
15
<p>Если задать границы, выходящие за пределы длины среза, будет паника времени выполнения:</p>
16
<h2>Использование [:] для "удаления" элементов</h2>
16
<h2>Использование [:] для "удаления" элементов</h2>
17
<p>В Go нет встроенной функции для удаления элементов из среза, но [:] позволяет легко получить новый срез без нужных элементов.</p>
17
<p>В Go нет встроенной функции для удаления элементов из среза, но [:] позволяет легко получить новый срез без нужных элементов.</p>
18
<h3>Удаление первого элемента</h3>
18
<h3>Удаление первого элемента</h3>
19
<h3>Удаление последнего элемента</h3>
19
<h3>Удаление последнего элемента</h3>
20
<h3>Удаление диапазона элементов</h3>
20
<h3>Удаление диапазона элементов</h3>
21
<p>Можно отбросить несколько элементов, используя append() вместе с [:]:</p>
21
<p>Можно отбросить несколько элементов, используя append() вместе с [:]:</p>
22
<p>Конструкция [:] в таких примерах не копирует данные, а создаёт новый срез с нужным диапазоном, сохраняя общую память с исходным массивом.</p>
22
<p>Конструкция [:] в таких примерах не копирует данные, а создаёт новый срез с нужным диапазоном, сохраняя общую память с исходным массивом.</p>
23
<h2>Кратко</h2>
23
<h2>Кратко</h2>
24
24