Middle
Какво е defer в Go и в кой момент се извиква?
sobes.tech AI
Отговор от AI
В Go ключовата дума defer се използва за отлагане на извикването на функция: тя ще бъде изпълнена след завършването на обграждащата функция, но преди изхода й.
Това е удобно за освобождаване на ресурси, затваряне на файлове, отключване на мьютекси и други операции по почистване, като гарантира, че те ще се случат дори при грешки или паники.
Пример:
func readFile() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close() // файлът ще бъде затворен в края на функцията
// работа с файла
}
Тук file.Close() ще бъде извикан автоматично при изход от readFile, независимо как приключва функцията.