Оператор Defer откладывает выполнение функции до возврата из окружающей функции. Множественные задержки помещаются в стек и выполняются в порядке «последним пришел - первым ушел» (LIFO). Defer обычно используется для очистки ресурсов, таких как файл, соединение с базой данных и т. Д. Давайте посмотрим на пример ниже:

Поскольку мы знаем, что операторы defer push в стек в порядке LIFO, проверьте это ниже:

package main

func main() {
       for i := 0; i < 5; i++ {
              defer println(i)
       }
}

Будет напечатано 4,3,2,1,0. Перейдите сюда, чтобы узнать больше о defer. Операторы Defer выполняются после возврата из функции, как правило, полезны для обнаружения ошибок.

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

package main

func main() {
       println("After this, panic will start")
       panic("Panic occoured!")
       println("This line will not appear")
}

Смотрите результат в palyground. Подробнее о панике здесь.

Восстановление - еще одна встроенная функция в go. Это помогает восстановить нормальный поток исполнения после паники. Обычно он используется с оператором defer для восстановления паники в горутине. Давайте используем все три утверждения, которые мы изучили в этой серии, чтобы увидеть пример recover.

Запустите код на игровой площадке. Подробнее про восстановление здесь.

Примечание. Я постараюсь обновить все свои статьи в этой серии. Чтобы получать обновления, подпишитесь на меня в твиттере или на носителе. И еще одно: если вы обнаружите в этих статьях какие-либо ошибки или вводящие в заблуждение, пожалуйста, позвоните мне или напишите комментарий. Спасибо

Если вам нравится мой текст, подпишитесь на меня, Саддам Х.