Язык Go — кратко. Часть 4. Отложенное выполнение

В языке Go есть приятная удобная штука — отложенное выполнение функций. Откладывается выполнение до момента непосредственно перед выходом из текущей функции. Удобно в первую очередь для закрытия файлов, каналов и т.п. Пример:

defer file.Close() говорит, что перед выходом из текущей функции — main() — надо вызвать file.Close()

Если есть потребность, можно указать безымянную функцию.

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

Важный момент — отложить можно только выполнение конкретной функции.

В такой ситуации myObj.GetFile() будет выполнено сразу где указан defer, а отложен будет только вызов .Close() для того объекта, который получили.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *