Senior
Kedy bude volaná odložená funkcia defer? Pri opustení lokálneho bloku, pri opustení funkcie alebo pri ukončení aplikácie?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa odložená funkcia, deklarovaná pomocou defer, sa volá pri ukončení funkcie, v ktorej bola deklarovaná. To sa deje bez ohľadu na spôsob ukončenia — bežné ukončenie, návrat s chybou alebo panika.
Dôležité: defer sa nespúšťa pri opustení lokálneho bloku (napríklad slučky alebo podmienky), ale iba pri opustení celej funkcie. Navyše, defer nečaká na dokončenie celej aplikácie, ale sa vykoná ihneď pri ukončení funkcie.
Príklad:
func príklad() {
defer fmt.Println("odložené volanie")
fmt.Println("telo funkcie")
}
// Pri volaní príklad() sa najskôr vypíše "telo funkcie", a pri ukončení — "odložené volanie".