持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
一、匿名函数:
一、介绍:
Go 支持匿名函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。
匿名函数:没有定义名字的函数
二、匿名函数使用方式一:
在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次。【案例演示】
package main
import "fmt"
func main() {
// 在定义匿名函数时,就直接调用,这种方式匿名函数只能调用一次
// 案例演示:求两个数的和,使用匿名函数的方式来完成
res1 := func(n1 int, n2 int) int {
return n1 + n2
}(10, 20)
fmt.Println("res1=", res1)
// 这里体现出定义:
// func(n1 int, n2 int) int {
// return n1 + n2
// }
// 这里体现出来传参
// (10, 20)
}
匿名函数:相当于定义一个函数作用域,在此匿名函数中的变量不会污染全局变量。
三、匿名函数使用方式二:
将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数【案例演示】
package main
import "fmt"
func main() {
// 在定义匿名函数时,就直接调用,这种方式匿名函数只能调用一次
// 案例演示:求两个数的和,使用匿名函数的方式来完成
res1 := func(n1 int, n2 int) int {
return n1 + n2
}(10, 20)
fmt.Println("res1=", res1)
// 这里体现出定义:
// func(n1 int, n2 int) int {
// return n1 + n2
// }
// 这里体现出来传参
// (10, 20)
// 将匿名函数 func(n1 int, n2 int) int 赋给 a 变量
// 则 a 的数据类型就是函数类型 , 此时,我们可以通过 a 完成调用
// 将匿名函数交给一个变量,再通过变量完成调用(简单来说,用处不大)
a := func(n1 int, n2 int) int {
return n1 - n2
}
res2 := a(10, 30)
fmt.Println("res2=", res2)
res3 := a(90, 30)
fmt.Println("res3=", res3)
}
四、全局匿名函数:
如果将匿名函数赋值给一个全局变量,那么这个匿名函数,就成为一个全局匿名函数,可以在程序有效【案例演示】
package main
import "fmt"
// 定义一个全局匿名函数变量
var (
// func1 就是一个全局匿名函数
Func1 = func(n1 int, n2 int) int {
return n1 * n2
}
)
func main() {
// 全局匿名函数的使用
res4 := Func1(4, 9)
fmt.Println("res4=", res4)
}