匿名函数
Coddy Golang 中的函数和指针 课程的第 9 课,共 19 课。
我们已经学过如何定义一个有名称的函数,需要调用它时,就使用这个名称。不过,还有一种没有名称的函数,我们称之为匿名函数。
它的作用和简单函数一样,但工作方式有些不同。使用这类函数,我们可以直接定义操作,而不必在其他地方定义函数。
来看看如何定义匿名函数:
b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))这里,我们定义了一个变量 b,它存储了一个执行减法的匿名函数。调用这个函数时,只需使用变量名 b(100, 50)。
我们也可以从另一个函数接收一个匿名函数作为结果。例如:
func operation(a int) func(int) int {
if a == 1 {
return func(a int) int { return a + 10 }
} else {
return func(a int) int { return a * 10 }
}
}
func main() {
b := operation(1)
fmt.Println(b(14))
}这里,我们定义了一个名为 operation 的普通函数,它的结果(返回值)是一个匿名函数 <strong>func(int) int</strong>,而不是一个简单的值。
我们将返回值赋给变量 b。由于我们将 1 作为参数传给函数 operation,因此会执行下面这个代码块:
return func(a int) int { return a + 10 }现在,调用匿名函数 b 时,需要传入一个整数值,例如 14。
结果是:
24这是计算 a + 10 的结果,其中传入的 a 是 14(<strong>b(14)</strong>)。
挑战
简单编写一个匿名函数,它接受 三个 整数参数。
如果第一个参数大于最后一个 参数,就返回所有参数的和。否则,返回第一个参数和最后一个参数的乘积。
将函数的结果存储在名为 result 的变量中。
亲手试试
package main
import "fmt"
func main() {
// 定义匿名函数,并将它赋值给名为 "result" 的变量。
// 打印结果。不要修改这部分!
fmt.Println("Result:", result(2, 3, 4))
fmt.Println("Result:", result(8, 3, 4))
}
Golang 中的函数和指针中的所有课
自己练习: Go 在线编译器