Оператор 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
.
Запустите код на игровой площадке. Подробнее про восстановление здесь.
Примечание. Я постараюсь обновить все свои статьи в этой серии. Чтобы получать обновления, подпишитесь на меня в твиттере или на носителе. И еще одно: если вы обнаружите в этих статьях какие-либо ошибки или вводящие в заблуждение, пожалуйста, позвоните мне или напишите комментарий. Спасибо
Если вам нравится мой текст, подпишитесь на меня, Саддам Х.