是的,go 中的匿名函数可用于快速定义一次性函数或立即执行函数,而闭包则用于将局部变量封锁在匿名函数中,即使后者返回也能访问这些变量。

Go 中的匿名函数和闭包理解
匿名函数是在不定义函数名称的情况下直接定义的函数。它们通常用于定义一次性函数,或需要立即执行的函数。语法:
func() {
// 函数体
}闭包是一种将局部变量“封锁”在匿名函数中,即使在匿名函数返回后也能访问局部变量的技术。这可以通过将匿名函数作为其他函数或方法的返回值来实现。语法:
func makeCounter() func() int {
count := 0
return func() int {
count++
return count
}
}实战案例:生成随机数
以下代码使用匿名函数和闭包生成一个生成随机数的函数:
立即学习“go语言免费学习笔记(深入)”;
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 创建一个匿名函数,生成一个随机数
randomFunc := func() int {
rand.Seed(time.Now().UnixNano())
return rand.Intn(100)
}
// 将匿名函数包装在一个闭包中,封锁随机数生成器
getRand := func(r func() int) func() int {
return func() int {
return r()
}
}(randomFunc)
// 生成 10 个随机数并打印
for i := 0; i < 10; i++ {
fmt.Println(getRand())
}
}输出:
32 78 15 64 12 99 17 42 5 37










