面试题答案
一键面试package main
import "fmt"
func main() {
// 外部变量
externalVar := 10
// 匿名函数
sumFunc := func(a, b int) int {
// 闭包使用外部变量
return a + b + externalVar
}
result := sumFunc(5, 3)
fmt.Printf("结果: %d\n", result)
}
闭包在此处的工作原理:匿名函数 sumFunc
不仅捕获了传入的参数 a
和 b
,还捕获了外部变量 externalVar
。即使 externalVar
的声明在匿名函数定义的外部,匿名函数也能记住并访问它在定义时 externalVar
的值。在Go语言中,闭包使得函数可以访问其词法环境中的变量,即使函数在定义它的环境之外被调用,这些变量的值依然有效。