面试题答案
一键面试package main
import "fmt"
func main() {
num := 10
defer func() {
fmt.Println("延迟函数打印变量值:", num)
}()
num = 20
fmt.Println("函数执行过程中变量值的变化:", num)
}
闭包在这个过程中的作用:
- 闭包能够捕获并记住其外层函数作用域中的变量,即使外层函数已经返回。在上述代码中,延迟函数(匿名函数)形成了闭包,它捕获了外层函数中的
num
变量。 - 这样,当延迟函数执行时(也就是外层函数结束时),它能够访问到
num
变量最终的值。如果没有闭包机制,延迟函数可能无法访问到外层函数的num
变量,或者访问到的是无效的值。