Middle
Какво е операторът defer в езика Go?
sobes.tech AI
Отговор от AI
Операторът defer се използва за отлагане на изпълнението на функция или метод. Функциите, маркирани с defer, се изпълняват точно преди изхода от функцията, която ги съдържа.
Принципи на работа на defer:
- Изпълнява се при изход от текущата функция, независимо дали е нормално или чрез паника.
- Множество
deferв една функция се изпълняват в ред LIFO (Last-In, First-Out). - Полезен е за почистване на ресурси, като затваряне на файлове или мрежови връзки.
Пример за използване:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Отваряне на файл.")
file, err := os.Open("example.txt")
if err != nil {
// Обработка на грешка
return
}
// Отложено затваряне на файла
defer file.Close()
defer fmt.Println("Файлът ще бъде затворен.") // Този defer ще се изпълни първи (LIFO)
fmt.Println("Обработка на файла...")
// Допълнителна работа с файла
}
Изход на програмата:
Отваряне на файл.
Обработка на файла...
Файлът ще бъде затворен.