Go
package main
import "fmt"
//63
func F63(n int) func() int {
return func() int {
n++
return n
}
}
// 最终768
func main() {
f := F63(5)
defer func() {
fmt.Println("结果。。。。", f()) //只是注册一下函数 先进入最后执行 计算为8
}()
defer fmt.Println("结果。。", f()) //会先计算结果然后压入栈中 计算为6
i := f() //计算为7
fmt.Println("结果。。。", i)
}
最终结果 678
解析:知识点:匿名函数、defer()。defer() 后面的函数如果带参数,会优先计算参数,并将结果存储在栈中,到真正执行 defer() 的时候取出