Golang函数指针和闭包:使用方法指南
作者:WarmHope
时间:2024-05-06
来源:互联网
浏览:0
Golang函数指针和闭包:使用方法指南函数指针概念函数指针是指向函数地址的变量。可以使用*funcType语法创建函数指针,其中funcType是函数签名。示例//定义一个函数类型typeMyFuncTypefunc(int)//创建一个函数指针varmyFuncPtrMyFuncType=func(xint){fmt.Println(x)}用法函数指针可以通过解引用运算符*来间接调用。//调用函数指针(*myFuncPtr)(10)//输出

Golang 函数指针和闭包:使用方法指南
函数指针
概念
函数指针是指向函数地址的变量。可以使用 *funcType 语法创建函数指针,其中 funcType 是函数签名。
示例
// 定义一个函数类型
type MyFuncType func(int)
// 创建一个函数指针
var myFuncPtr MyFuncType = func(x int) {
fmt.Println(x)
}用法
函数指针可以通过解引用运算符 * 来间接调用。
// 调用函数指针 (*myFuncPtr)(10) // 输出 10
闭包
概念
闭包是一种函数,它引用了定义它所在的函数作用域之外的变量。它允许函数访问在不同作用域中定义的变量。
示例
// 外部作用域
i := 0
// 定义一个闭包
myClosure := func() {
i++
fmt.Println(i)
}用法
闭包可以通过调用闭包函数来使用。
// 尽管外部作用域的 i 现在是 1,但闭包仍然引用其原始值 0 myClosure() // 输出 0 i = 2 myClosure() // 输出 1
实战案例:计算任意数量的数字之和
问题
编写一个函数,给定任意数量的数字,计算它们的总和。
解决方案
我们可以使用函数指针和闭包来动态生成计算特定数量数字之和的函数。
func sum(numbers ...int) func() int {
// 闭包捕获了 numbers 变量
total := 0
return func() int {
for _, num := range numbers {
total += num
}
return total
}
}
func main() {
// 创建并调用计算三个数字之和的函数
mySum := sum(1, 2, 3)
fmt.Println(mySum()) // 输出 6
}
作者最新文章
思源笔记
2026-09-16 17:42
在线PDF转TXT操作步骤与乱码排查指南
2026-09-04 13:02
PDF加水印后如何检查显示效果?在线工具操作步骤与避坑指南
2026-09-03 13:02
Xshell保持连接不断开及会话文件本地存储路径详解
2026-09-03 06:02
两个PDF怎么合并成一个?在线合并后怎么检查顺序?
2026-09-02 20:00
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















