MST

星途 面试题库

面试题:Go中闭包在延迟执行场景下的基础应用

请编写一段Go代码,利用闭包在延迟执行场景中实现:在函数开始时定义一个变量,延迟函数在函数结束时打印该变量的值,且该变量在函数执行过程中有值的变化,解释闭包在这个过程中的作用。
29.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

func main() {
    num := 10
    defer func() {
        fmt.Println("延迟函数打印变量值:", num)
    }()
    num = 20
    fmt.Println("函数执行过程中变量值的变化:", num)
}

闭包在这个过程中的作用:

  • 闭包能够捕获并记住其外层函数作用域中的变量,即使外层函数已经返回。在上述代码中,延迟函数(匿名函数)形成了闭包,它捕获了外层函数中的 num 变量。
  • 这样,当延迟函数执行时(也就是外层函数结束时),它能够访问到 num 变量最终的值。如果没有闭包机制,延迟函数可能无法访问到外层函数的 num 变量,或者访问到的是无效的值。