下面代码会输出什么?
package main
import "fmt"
func func2() (val int) {
val = 10
defer func() {
val += 1
}()
// return执行顺序是:将返回值保存在栈上 --> 执行defer函数 --> 函数返回
return val
}
func func3() int {
val := 10
defer func() {
val += 1
}()
// return执行顺序是:将返回值保存在栈上 --> 执行defer函数 --> 函数返回
return val
}
func printFunc2() {
fmt.Println(func2())
}
func printFunc3() {
fmt.Println(func3())
}
func main() {
fmt.Println("printFunc2")
printFunc2()
fmt.Println("printFunc3")
printFunc3()
}
输出结果:
printFunc2
11
printFunc3
10