Go
defer Deferred Call
Usage and execution order of defer.
By EZ4Code Team
deferresource-release
Code
package main
import (
"fmt"
"os"
)
func main() {
// LIFO order execution
defer fmt.Println("1")
defer fmt.Println("2")
defer fmt.Println("3")
// Output: 3, 2, 1
// Resource release
f, err := os.Open("file.txt")
if err != nil {
return
}
defer f.Close()
// defer executes after return
fmt.Println("main end")
}
// defer arguments evaluated immediately
func example() {
i := 1
defer fmt.Println(i) // 1
i = 2
fmt.Println(i) // 2
}Explanation
defer executes in LIFO order, commonly used for resource release.