return 不是原子操作.
没有defer时的函数return:
1.函数返回值赋值
2.ret指令
有defer时的函数return:
1.函数返回值赋值
2.执行defer
3.ret指令
func f1() int { //返回值为5
x := 5
defer func() {
x++
}()
return x
}
func f2() (x int) { //返回值为6
defer func() {
x++
}()
return 5
}
return 不是原子操作.
没有defer时的函数return:
1.函数返回值赋值
2.ret指令
有defer时的函数return:
1.函数返回值赋值
2.执行defer
3.ret指令
func f1() int { //返回值为5
x := 5
defer func() {
x++
}()
return x
}
func f2() (x int) { //返回值为6
defer func() {
x++
}()
return 5
}