您的位置:首页 >Golang函数指针和闭包:使用方法指南
发布于2025-05-22 阅读(0)
扫一扫,手机访问

概念
函数指针是指向函数地址的变量。可以使用 *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
}
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8