Sobes.tech
Middle

Čo je to operátor defer v jazyku Go?

sobes.tech AI

Odpoveď od AI

Operátor defer sa používa na odložené vykonanie funkcie alebo metódy. Funkcie označené defer sa vykonajú tesne pred opustením funkcie, ktorá ich obsahuje.

Princípy fungovania defer:

  • Vykoná sa pri opustení aktuálnej funkcie, či už normálnym spôsobom alebo panikou.
  • Viaceré defer v jednej funkcii sa vykonajú v poradí LIFO (Last-In, First-Out).
  • Je užitočný na upratovanie zdrojov, ako je zatváranie súborov alebo sieťových spojení.

Príklad použitia:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Otvorenie súboru.")

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

	// Odložené zatvorenie súboru
	defer file.Close()
	defer fmt.Println("Súbor bude zatvorený.") // Tento defer sa vykoná ako prvý (LIFO)

	fmt.Println("Spracovanie súboru...")

	// Ďalšia práca so súborom
}

Výstup programu:

Otvorenie súboru.
Spracovanie súboru...
Súbor bude zatvorený.