Middle
V jakém pořadí se v Go provádějí odložené funkce (defer)?
sobes.tech AI
Odpověď od AI
Odložené funkce se vykonávají v opačném pořadí, než byly definovány, tedy LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("první") // Definováno jako poslední
defer fmt.Println("druhý") // Definováno jako předposlední
defer fmt.Println("třetí") // Definováno jako první
}
Výsledkem bude, že při spuštění tohoto kódu se vypíše:
třetí
druhý
první
Po opuštění scope (funkce), ve které bylo defer deklarováno, jsou odložené funkce volány v opačném pořadí. To je užitečné pro uvolnění zdrojů, zavření souborů, odemknutí mutexů a další operace čištění.