Middle
Czym jest operator defer w języku Go?
sobes.tech AI
Odpowiedź od AI
Operator defer jest używany do odłożonego wykonania funkcji lub metody. Funkcje oznaczone defer są wykonywane bezpośrednio przed wyjściem z funkcji, która je zawiera.
Zasady działania defer:
- Wykonuje się przy wychodzeniu z bieżącej funkcji, niezależnie od tego, czy jest to normalne wykonanie, czy panic.
- Wiele
deferw jednej funkcji jest wykonywanych w kolejności LIFO (Last-In, First-Out). - Przydatne do czyszczenia zasobów, takich jak zamykanie plików czy połączeń sieciowych.
Przykład użycia:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Otwieranie pliku.")
file, err := os.Open("example.txt")
if err != nil {
// Obsługa błędu
return
}
// Opóźnione zamknięcie pliku
defer file.Close()
defer fmt.Println("Plik zostanie zamknięty.") // Ten defer wykona się jako pierwszy (LIFO)
fmt.Println("Przetwarzanie pliku...")
// Dalsza praca z plikiem
}
Wynik działania programu:
Otwieranie pliku.
Przetwarzanie pliku...
Plik zostanie zamknięty.