Sobes.tech
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, независимо как приключва функцията.