Хотя в Go нет исключений, в нем есть похожий механизм, известный как "отложить, запаниковать и восстановиться". Идеология Go заключается в том, что добавление исключений, подобных оператору try/catch/finally в JavaScript, приведет к усложнению кода и побудит программистов обозначать слишком много базовых ошибок, таких как невозможность открыть файл, как исключительные. Не следует использовать defer/panic/recover так же, как throw/catch/finally; только в случаях неожиданного, неустранимого сбоя.
Defer - это языковой механизм, который помещает вызов функции в стек. Каждая отложенная функция выполняется в обратном порядке при завершении основной функции, независимо от того, вызвана ли паника или нет. Механизм откладывания очень полезен для очистки ресурсов: