golang匿名函数及闭包原理解析
作者:水悠悠予安
时间:2024-05-29
来源:互联网
浏览:0
是的,Go中的匿名函数可用于快速定义一次性函数或立即执行函数,而闭包则用于将局部变量封锁在匿名函数中,即使后者返回也能访问这些变量。
是的,Go 中的匿名函数可用于快速定义一次性函数或立即执行函数,而闭包则用于将局部变量封锁在匿名函数中,即使后者返回也能访问这些变量。

Go 中的匿名函数和闭包理解
匿名函数是在不定义函数名称的情况下直接定义的函数。它们通常用于定义一次性函数,或需要立即执行的函数。语法:
func() {
// 函数体
}闭包是一种将局部变量“封锁”在匿名函数中,即使在匿名函数返回后也能访问局部变量的技术。这可以通过将匿名函数作为其他函数或方法的返回值来实现。语法:
func makeCounter() func() int {
count := 0
return func() int {
count++
return count
}
}实战案例:生成随机数
以下代码使用匿名函数和闭包生成一个生成随机数的函数:
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
作者最新文章
灵活计算器
2026-09-16 17:45
苹果折叠屏iPhone预计售价是多少
2026-09-14 13:44
OpenAI GPT-6 Astra 自主通关《传送门》:技术原理与实验成本解析
2026-09-08 19:08
苹果与铠侠签署NAND长期供应协议:3-5年长约与不设价格上限背后的供应链战略
2026-09-08 16:58
PDF转PPT操作指南:在线、本地与批量转换及结果核对
2026-09-04 15:04
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















