面试题答案
一键面试package main
import "fmt"
// NewCounter 创建一个计数器闭包
func NewCounter() func() int {
count := 0
return func() int {
count++
return count
}
}
可以通过以下方式调用:
func main() {
counter := NewCounter()
fmt.Println(counter())
fmt.Println(counter())
fmt.Println(counter())
}
在上述代码中,NewCounter
函数返回一个闭包,该闭包内部维护一个 count
变量,每次调用闭包时 count
自增并返回,由于闭包仅依赖自身内部状态且每次调用返回结果只与内部状态有关,没有修改外部状态等副作用,符合纯函数概念。