(08) defer 延时执行
defer 应用的典型场景:
打开文件,需要关闭,打开数据库,然后断开连接,打开网络连接,传输完成后断开连接。
func main() { fmt.Println("日照香炉生紫烟") fmt.Println("遥看瀑布挂前川") fmt.Println("飞流直下三千尺") goto GAMEOVER fmt.Println("日照香炉生紫烟") //goto 标签 GAMEOVER: fmt.Println("GAME OVER") }
执行结果:
代码正常的执行顺序。
func main() { fmt.Println("开门") fmt.Println("开灯") fmt.Println("打开电脑") fmt.Println("敲代码") fmt.Println("关电脑") fmt.Println("关灯") fmt.Println("关门") }
加入defer后的
func main() { fmt.Println("开门") defer fmt.Println("关门") fmt.Println("开灯") defer fmt.Println("关灯") fmt.Println("打开电脑") defer fmt.Println("关电脑") fmt.Println("敲代码") }
多个defer的话,执行结果是从后到前。执行结果