首先在学习defer之前要先了解Go语言的return是怎么操作的。
return:分为两个步骤,1、首先执行的将需要返回的数据进行赋值,
2、然后才是真正的返回数据
defer:延迟执行,后面必须跟一个函数调用语句(expression in defer must be function call),否则报错:
syntax error: unexpected ++ at end of statement。
defer的执行步骤在return语句的1和2之间。
package main
import "fmt"
// fun的执行顺序是1, 2, 3
func fun(){
fmt.Println(1)
defer func(){
fmt.Println(3<