Sobes.tech
Junior

Jaką rolę odgrywa konstrukcja defer w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go konstrukcja defer służy do odłożonego wykonania funkcji — zostanie ona wywołana w momencie wyjścia z bieżącej funkcji, niezależnie od tego, jak dokładnie to wyjście nastąpi (normalnie lub z powodu błędu).

Jest to wygodne do zwalniania zasobów, zamykania plików, odblokowywania mutexów i innych operacji sprzątania.

Przykład:

func readFile() error {
    file, err := os.Open("file.txt")
    if err != nil {
        return err
    }
    defer file.Close() // plik zostanie zamknięty przy wyjściu z funkcji

    // praca z plikiem
    return nil
}

W ten sposób defer pomaga zagwarantować wykonanie ważnych działań końcowych, poprawiając zarządzanie zasobami i obsługę błędów.