Defer
Context
Section titled “Context”The defer statement postpones the execution of a function until the surrounding function returns (after a return or when panic occurs). Deferred calls are stacked and executed in LIFO order (last in, first out).
Typical uses: closing files, releasing locks, cleanup.
Example
Section titled “Example”Demonstrate the order of defer execution and their usefulness.
Code example
Section titled “Code example”package main
import "fmt"
func main() { fmt.Println("start")
// Deferred calls are stacked defer fmt.Println("first defer (executed last)") defer fmt.Println("second defer") defer fmt.Println("third defer (executed first)")
fmt.Println("end of function") // Deferred calls execute here, after implicit return}Output
Section titled “Output”startend of functionthird defer (executed first)second deferfirst defer (executed last)Real use: file closing
Section titled “Real use: file closing”f, err := os.Open("file.txt")if err != nil { return err}defer f.Close() // guaranteed closure