面试题答案
一键面试闭包定义
在Go语言中,闭包是一个函数值,它可以引用其函数体外部的变量。闭包允许在一个函数内部定义另一个函数,并访问和操作外部函数的局部变量,即使外部函数已经返回,这些变量依然可以被内部函数访问和修改。
示例代码
package main
import "fmt"
// Counter 函数返回一个闭包,该闭包实现计数器功能
func Counter() func() int {
count := 0
return func() int {
count++
return count
}
}
你可以使用以下方式调用这个闭包:
func main() {
c := Counter()
fmt.Println(c()) // 输出: 1
fmt.Println(c()) // 输出: 2
fmt.Println(c()) // 输出: 3
}
在上述代码中,Counter
函数返回一个匿名函数,这个匿名函数形成了闭包,它可以访问并修改 Counter
函数内部的 count
变量。每次调用返回的闭包函数,count
变量的值都会自增并返回。