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