《零基础Go语言算法实战》【题目 2-8】defer 和 return 语句
《零基础Go语言算法实战》
【题目 2-8】defer 和 return 语句
下面代码的输出是什么?请说明原因。
package main
import "fmt"
func main() {
fmt.Println("result:", def())
}
func def() int {
var i int
defer func() {
i++
fmt.Println("a", i)
}()
defer func() {
i++
fmt.Println("b", i)
}()
return i
}
【解答】
b 1
a 2
result: 0
说明:多个 defer 的执行顺序为“后进先出”。defer、return、返回值三者的执行逻辑:return
最先执行,负责将结果写入返回值;接着 defer 开始执行;最后函数将返回值返回并退出。