Go 语言匿名函数_回调函数
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ; - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 54w+ 字,讲解图 2476+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1900+ 小伙伴加入学习 ,欢迎点击围观
在 Go 语言 中,匿名函数 是没有名字的函数,只有函数体。匿名函数经常以变量 的形式被传递。
大部分场景下,匿名函数经常被使用于实现函数回调、闭包等。
一、定义一个匿名函数
匿名函数的定义格式如下:
func(参数列表) (返回参数列表) {
函数体
}
从上面可以看出来,匿名函数的定义格式其实就是没有函数名的普通函数定义格式。
1.1 定义后立即调用匿名函数
可以定义完匿名函数后,立即调用它,例如:
package main
import "fmt"
func main() {
func(name string) {
fmt.Printf("hello, %s", name)
}("犬小哈教程")
}
上面的代码,我们注意到函数后面立刻跟上传入参数,表示对匿名函数的调用。
代码输出如下:
hello, 犬小哈教程
1.2 将匿名函数赋值给变量
匿名函数可以赋值给变量,示例如下:
package main
import "fmt"
func main() {
// 将匿名函数赋值给变量 function
function := func(name string) {
fmt.Printf("hello, %s", name)
}
// 使用变量 function 调用函数
function("犬小哈教程")
}
代码输出如下:
hello, 犬小哈教程
二、匿名函数用作回调函数
下面演示一段匿名函数充当回调函数的示例:
package main
import "fmt"
func visit(list []string, f func(string)) {
// 遍历切片中的元素,并将值作为参数传给回调函数
for _, value := range list {
// 调用回调函数
f(value)
}
}
func main() {
// 定义一个切片
list := []string{"犬小哈", "quanxiaoha.com"}
// 使用匿名函数打印切片内容
visit(list, func(value string) {
fmt.Println(value)
})
}
代码输出如下:
犬小哈
quanxiaoha.com
图示: