Sobes.tech
Junior — Middle

Czy możesz wyjaśnić zasadę działania i zastosowanie konstrukcji defer w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go słowo kluczowe defer służy do odłożenia wywołania funkcji — zostanie ona wykonana w momencie opuszczenia bieżącej funkcji, niezależnie od tego, jak dokładnie do tego dojdzie (normalnie czy z powodu błędu). Jest to wygodne do zwalniania zasobów, zamykania plików, odblokowywania mutexów i innych operacji sprzątających.

Przykład:

func readFile(filename string) error {
    file, err := os.Open(filename)
    if err != nil {
        return err
    }
    defer file.Close() // plik zostanie zamknięty przy opuszczaniu funkcji

    // praca z plikiem
    return nil
}

W ten sposób defer pomaga pisać bardziej czysty i bezpieczny kod, gwarantując wykonanie ważnych działań końcowych.