Junior — Middle
Mi a Defer operátor hatóköre Go-ban, és hogyan működik?
sobes.tech MI
Válasz az MI-től
В Go оператор defer используется для отложенного вызова функции — она будет выполнена после завершения окружающей функции, в которой объявлен defer.
Область видимости defer ограничена функцией, в которой он объявлен. Это значит, что отложенный вызов сработает только при выходе из текущей функции, даже если внутри есть несколько вложенных блоков.
Пример:
func example() {
defer fmt.Println("Отложенный вызов")
fmt.Println("Основной код")
}
// При вызове example() сначала выведется "Основной код", затем "Отложенный вызов".
Таким образом, defer удобно использовать для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и других операций, которые должны выполниться в конце функции, независимо от того, как она завершится.