Menu
CoddyTech

匿名函数

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>)。
 

challenge icon

挑战

简单

编写一个匿名函数,它接受 三个 整数参数。

如果第一个参数大于最后一个 参数,就返回所有参数的和。否则,返回第一个参数和最后一个参数的乘积。

将函数的结果存储在名为 result 的变量中。

亲手试试

package main

import "fmt"

func main() {
    // 定义匿名函数,并将它赋值给名为 "result" 的变量。
 
    
    
    // 打印结果。不要修改这部分!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Golang 中的函数和指针中的所有课

自己练习: Go 在线编译器