HTML Diff
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 &lt; 5 - условие выполнения.</li>
6 <li>i &lt; 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 &lt; n; i++, можно использовать конструкцию for range.</p>
13 <p>В Go существует альтернативный вариант цикла для задачи повторения какого-то действия n раз. Вместо привычного счётчика i := 0; i &lt; 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>