Шаг 76.
Язык программирования Go.
Замыкания

    На этом шаге рассмотрим замыкания в Go.

    Замыкание – это функция, "захватывающая" константы и переменные, представленные в той же области видимости, где создается сама функция, если она ссылается на них. Это означает, что замыкание сохраняет возможность доступа к таким константам и переменным, даже когда оно вызывается далеко от того места, где оно было создано. При этом не имеет значения, находятся ли захваченные константы и переменные в области видимости в точке вызова замыкания, – если замыкание ссылается на них, они будут храниться в памяти для использования в замыкании.

    В языке Go все анонимные функции (или литералы функций, как они называются в спецификации языка Go) являются замыканиями.

    Замыкания создаются практически так же, как и обычные функции, но с одним важным отличием: замыкания не имеют имен (то есть за ключевым словом func сразу же следует открывающая круглая скобка). Чтобы иметь возможность пользоваться замыканиями, они обычно присваиваются переменным или сохраняются в структурах данных (таких как отображения или срезы).

    Анонимные функции в инструкциях defer или go являются замыканиями.

    Одна из областей применения замыканий – создание функций-оберток , предопределяющих один или более аргументов обертываемой функции.

    Задание 1. Написать функцию, которая ко множеству имен файлов добавляет различные расширения (рис.1):


Рис.1. Пример работы приложения

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

    На следующем шаге рассмотрим рекурсивные функции в Go.


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