Sobes.tech
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 defer w 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.