0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В Go есть только одна конструкция для организации циклов - for. Она заменяет собой и while, и do while из других языков. С её помощью можно реализовать любые виды повторений.</p>
1
<p>В Go есть только одна конструкция для организации циклов - for. Она заменяет собой и while, и do while из других языков. С её помощью можно реализовать любые виды повторений.</p>
2
<h2>Классический цикл со счётчиком</h2>
2
<h2>Классический цикл со счётчиком</h2>
3
<p>Наиболее распространённый способ перебора:</p>
3
<p>Наиболее распространённый способ перебора:</p>
4
<p><strong>Здесь:</strong></p>
4
<p><strong>Здесь:</strong></p>
5
<ul><li>i := 0 - инициализация переменной.</li>
5
<ul><li>i := 0 - инициализация переменной.</li>
6
<li>i < 5 - условие выполнения.</li>
6
<li>i < 5 - условие выполнения.</li>
7
<li>i++ - шаг итерации.</li>
7
<li>i++ - шаг итерации.</li>
8
</ul><h2>Цикл с только условием</h2>
8
</ul><h2>Цикл с только условием</h2>
9
<p>Такой for работает как while в других языках:</p>
9
<p>Такой for работает как while в других языках:</p>
10
<h2>Бесконечный цикл</h2>
10
<h2>Бесконечный цикл</h2>
11
<p>Обычно используется с break или return внутри тела, чтобы остановить выполнение.</p>
11
<p>Обычно используется с break или return внутри тела, чтобы остановить выполнение.</p>
12
<h2>Повторение действий с помощью range</h2>
12
<h2>Повторение действий с помощью range</h2>
13
<p>В Go существует альтернативный вариант цикла для задачи повторения какого-то действия n раз. Вместо привычного счётчика i := 0; i < n; i++, можно использовать конструкцию for range.</p>
13
<p>В Go существует альтернативный вариант цикла для задачи повторения какого-то действия n раз. Вместо привычного счётчика i := 0; i < n; i++, можно использовать конструкцию for range.</p>
14
<p>Если понадобится использовать номер итерации, вы можете явно объявить переменную:</p>
14
<p>Если понадобится использовать номер итерации, вы можете явно объявить переменную:</p>
15
<p>Такой цикл начинается с 0 и заканчивается на n - 1 - как в обычном счётчике.</p>
15
<p>Такой цикл начинается с 0 и заканчивается на n - 1 - как в обычном счётчике.</p>
16
<h2>Перебор строки посимвольно</h2>
16
<h2>Перебор строки посимвольно</h2>
17
<p>Цикл for ... range позволяет пройтись по строке символ за символом. Внутри цикла доступны:</p>
17
<p>Цикл for ... range позволяет пройтись по строке символ за символом. Внутри цикла доступны:</p>
18
<ul><li>Индекс символа.</li>
18
<ul><li>Индекс символа.</li>
19
<li>Сам символ в виде rune (Unicode).</li>
19
<li>Сам символ в виде rune (Unicode).</li>
20
</ul><p><strong>Что делает range?</strong></p>
20
</ul><p><strong>Что делает range?</strong></p>
21
<ul><li>Возвращает индекс текущего элемента (в байтах).</li>
21
<ul><li>Возвращает индекс текущего элемента (в байтах).</li>
22
<li>Возвращает символ в виде rune - это Unicode-код символа.</li>
22
<li>Возвращает символ в виде rune - это Unicode-код символа.</li>
23
</ul><p>Строка в Go - это последовательность байт, но range работает корректно с UTF-8 и возвращает именно символы (а не байты):</p>
23
</ul><p>Строка в Go - это последовательность байт, но range работает корректно с UTF-8 и возвращает именно символы (а не байты):</p>
24
<p>Индексы 0 и 2 - потому что символы г и о занимают по два байта каждый.</p>
24
<p>Индексы 0 и 2 - потому что символы г и о занимают по два байта каждый.</p>
25
<p>Если не нужен индекс, его можно опустить с помощью _:</p>
25
<p>Если не нужен индекс, его можно опустить с помощью _:</p>
26
<p>Цикл range будет особенно полезен при работе с коллекциями (срезами, словарями и т.п.), к которым мы перейдём в следующих уроках.</p>
26
<p>Цикл range будет особенно полезен при работе с коллекциями (срезами, словарями и т.п.), к которым мы перейдём в следующих уроках.</p>