闭包(Closure)是一种函数值,它可以引用在其外部定义的变量。闭包允许这些变量保持在函数内部,而不是被每次调用时重新创建。闭包的作用主要体现在以下几个方面
func counter() func() int {
count := 0
return func() int {
count++
return count
}
}
// 使用闭包创建一个计数器
c := counter()
fmt.Println(c()) // 输出: 1
fmt.Println(c()) // 输出: 2
func lazyAdd(a, b int) func() int {
result := 0
return func() int {
if result == 0 {
result = a + b
}
return result
}
}
// 使用闭包实现懒加载
add := lazyAdd(3, 4)
fmt.Println(add()) // 输出: 7
func multiplyBy(factor int) func(int) int {
return func(x int) int {
return x * factor
}
}
// 使用闭包创建不同倍数的乘法函数
multiplyBy2 := multiplyBy(2)
multiplyBy3 := multiplyBy(3)
fmt.Println(multiplyBy2(5)) // 输出: 10
fmt.Println(multiplyBy3(5)) // 输出: 15