//Go 语言中函数的return不是原子操作,在底层是分为两步来执行
//第一步,返回值赋值
//第二步,真正的RET返回
//函数中如果存在defer,那么defer执行的实际是在第一步和第二步之间
func f1() int {
x:=5
defer func() {
x++ //修改的是x,不是返回值
}()
return x //5
}
func f2() (x int) {
defer func() {
x++ //修改的是返回值
}()
return 5 //6
}
func f3()(y int){
x:=5
defer func() {
x++ //没有修改返回值
}()
return x //返回值 y=x=5
}
func f4()(x int){
defer func(x int) {
x++
}(x)
return 5 //返回值=x=5
}
defer
于 2021-03-01 14:01:20 首次发布