golang 高阶函数——函数的入参是函数,其执行顺序

Viewed 5

在 Go 语言中,函数可以作为参数传递给其他函数,这种情况通常称为高阶函数(Higher-order function)。高阶函数的执行顺序取决于函数调用时的参数顺序和被调用函数的逻辑。

这里有一个简单的例子来说明函数作为参数的使用:

package main

import "fmt"

// 定义一个简单的函数,它接受一个函数作为参数
func applyFunction(x float64, f func(float64) float64) float64 {
    return f(x)
}

// 定义一个简单的数学函数,比如平方
func square(x float64) float64 {
    return x * x
}

func main() {
    // 调用 applyFunction 并传入 5 和 square 函数
    result := applyFunction(5, square)
    fmt.Println(result) // 输出 25
}

在这个例子中,applyFunction 是一个高阶函数,它接受一个浮点数 x 和一个函数 f 作为参数。当 applyFunction 被调用时,它会将 x 作为参数传递给 f 并返回 f 的结果。

执行顺序如下:

  1. main 函数调用 applyFunction 并传递 5square 函数作为参数。
  2. applyFunction 接收到 5square 函数,然后调用 square 函数,并将 5 作为参数传递给 square
  3. square 函数执行,计算 5 * 5 并返回结果 25
  4. applyFunction 接收到 square 函数返回的 25 并将其作为结果返回。
  5. main 函数接收到 applyFunction 返回的 25 并打印出来。

所以,函数作为参数的执行顺序是由调用者决定的,并且高阶函数内部的逻辑决定了如何使用传入的函数。

0 Materials