Шаг 19.
Язык программирования Go.
Иструкция цикла for

    На этом шаге рассмотрим использование инструкции цикла в Go.

    В языке Go имеются две разновидности инструкции for, простая инструкция for и for ... range. Синтаксис простой инструкции:

for необязатПредИнструкция; логичВыражение; необязатПостИнструкция {
	блок
} 

    Фигурные скобки являются обязательными, а точки с запятой необходимы только в случае использования пред- и постинструкций, которые должны быть простыми инструкциями. Если в необязательной инструкции объявляются переменные или сохраняются значения, возвращаемые ключевым словом range (например, с помощью оператора :=), их область видимости простирается от точки объявления до конца всей инструкции for.

    Логическое выражение в простой инструкции for должно возвращать значение типа bool, потому что в языке Go не выполняется автоматическое преобразование нелогических значений. Частные случаи инструкции for:

for { // Бесконечный цикл
	блок
}
for логическоеВыражение { // Цикл while
	блок
}

    Вторая разновидность инструкции for ...range итераций по строкам возвращает индексы байтов.

for  индекс, символ := range  Строка { // Итерации по символам в Строке
	блок
}

    Вторая разновидность инструкции for ...range итераций по массивам или срезам для непустых срезов или массивов возвращает индексы элементов от 0 до len(срез) - 1.

for index := range массивИлиСрез { // Итерации по массиву или срезу
	блок // item := массивИлиСрез[index]
}

    Еще одна разновидность инструкции for...range итераций по массивам и срезам

for индекс, элемент := range массивИлиСрез { // Итерации по массиву или срезу
	блок
}

    Инструкции for ...range итераций по элементам ключ/значение и по ключам отображений возвращают элементы или ключи в произвольном порядке.

for ключ, значение := range Отображение { // Итерации по элементам отображения
	блок
}
for ключ := range Отображение {  // Итерации по элементам отображения
	блок  // значение := Отображение[ключ]
}

    Если необходимо получить данные в определенном порядке, можно воспользоваться второй формой инструкции, чтобы заполнить срез ключами и отсортировать этот срез как необходимо. Другое решение заключается в использовании упорядоченной структуры данных, например упорядоченного отображения.

    Если какая-либо из форм будет применена к пустой строке, массиву, срезу или отображению, тело цикла for просто не будет выполнено ни разу, и управление сразу перейдет к следующей инструкции.

    Выполнение цикла for можно прервать в любой момент с помощью инструкции break, передающей управление инструкции, следующей за инструкцией for, или, если в инструкции break указана метка, ближайшей вмещающей инструкции for, switch или select, где определена эта метка. Имеется также возможность с помощью инструкции continue передать управление в начало инструкции for, условному выражению или ключевому слову range, чтобы принудительно запустить следующую итерацию (или завершить цикл).

    Задание 1. Определить количество простых чисел в одномерном массиве из 10 случайных чисел от 1 до 99.

Раскрыть/скрыть решение и комментарии.

    На следующем шаге рассмотрим пример приложения, которое позволяет подсчитать количество повторяющихся строк в файле (файлах), имена файлов передаются как аргументы командой строки.


Предыдущий шаг Содержание Следующий шаг