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