Sobes.tech
Middle

V akom poradí sa vykonávajú odložené funkcie (defer) v Go?

sobes.tech AI

Odpoveď od AI

Odložené funkcie sa vykonávajú v opačnom poradí, než boli definované, teda LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("prvý") // Definované ako posledné
	defer fmt.Println("druhý") // Definované ako predposledné
	defer fmt.Println("tretí") // Definované ako prvé
}

Výsledkom bude, že pri spustení tohto kódu sa vypíše:

tretí
druhý
prvý

Pri opustení scope (funkcie), v ktorej bolo defer deklarované, sú odložené funkcie volané v opačnom poradí. Toto je užitočné na uvoľnenie zdrojov, zatváranie súborov, odomykanie mutexov a iné operácie čistenia.