Sobes.tech
Middle

Co je to operátor defer v jazyce Go?

sobes.tech AI

Odpověď od AI

Operátor defer se používá k odložení vykonání funkce nebo metody. Funkce označené defer se vykonají těsně před opuštěním funkce, ve které jsou definovány.

Principy fungování defer:

  • Vykoná se při opuštění aktuální funkce, ať už normálním průběhem nebo panikou.
  • Více defer v jedné funkci se vykoná v pořadí LIFO (Last-In, First-Out).
  • Je užitečný pro čištění zdrojů, například zavírání souborů nebo síťových spojení.

Příklad použití:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Otevíráme soubor.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Zpracování chyby
		return
	}

	// Odložené zavření souboru
	defer file.Close()
	defer fmt.Println("Soubor bude zavřen.") // Tento defer se vykoná jako první (LIFO)

	fmt.Println("Zpracováváme soubor...")

	// Další práce se souborem
}

Výstup programu:

Otevíráme soubor.
Zpracováváme soubor...
Soubor bude zavřen.