defer — schedules function call to run after surrounding function returns.
1func readFile(filename string) {2 file, err := os.Open(filename)3 if err != nil {4 log.Fatal(err)5 }6 defer file.Close() // Will close when function returns78 // Read file...9}
Key points:
1func example() {2 defer fmt.Println("First")3 defer fmt.Println("Second")4 defer fmt.Println("Third")5 // Output: Third, Second, First6}
Common uses: