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.