func f1() (r int) {
defer func () {
r++
}()
return 10
}
fmt.print(f1())
输出居然不是 10 ??????????
func f1() (r int) {
defer func () {
r++
}()
return 10
}
fmt.print(f1())
输出居然不是 10 ??????????
|
BingoXuanOct 12, 2020
1
应该是编译器优化吧,定义返回值 r,r 的值为 10,defer 执行函数使 r 自增,返回 r,结果是 11 。
|
|
gollwangOct 12, 2020
2
你 return 10 不就相当于:
r=10 return r ? |
|
nomanskyOct 12, 2020
3
golang 基础题了
|
|
DganzhOct 12, 2020
4
这里 return 过程是
赋值 r=10 ; 执行 defer,r=11 ; 返回 r=11 ; |
|
5
基础题了,区别于:
func f1() (int) { r:=10 defer func () { r++ }() return r } |
|
reusOct 14, 2020
6
是你自己没学好,官方博客都有一模一样的例子: https://blog.golang.org/defer-panic-and-recover
|