MST

星途 面试题库

面试题:Go 中高阶函数的基本应用

请编写一个 Go 程序,定义一个高阶函数,该函数接受另一个函数作为参数,并在内部调用这个传入的函数,同时展示如何传递不同的函数给这个高阶函数,以实现不同的行为。要求详细注释代码的每个部分,说明高阶函数的功能和传入函数的作用。
35.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

// 定义一个高阶函数,它接受一个无参数无返回值的函数作为参数
func higherOrderFunction(f func()) {
    // 在高阶函数内部调用传入的函数
    f()
}

// 定义一个函数,用于作为高阶函数的参数,实现一种具体行为
func function1() {
    fmt.Println("这是 function1 的行为")
}

// 定义另一个函数,用于作为高阶函数的参数,实现另一种具体行为
func function2() {
    fmt.Println("这是 function2 的行为")
}

func main() {
    // 传递 function1 给高阶函数 higherOrderFunction,实现 function1 的行为
    higherOrderFunction(function1)

    // 传递 function2 给高阶函数 higherOrderFunction,实现 function2 的行为
    higherOrderFunction(function2)
}

代码解释

  1. higherOrderFunction
    • 这是高阶函数,它接受一个类型为 func() 的函数 f 作为参数。
    • 它的功能是在内部调用传入的函数 f,通过调用不同的传入函数实现不同的行为。
  2. function1function2
    • 这两个函数都是无参数无返回值的函数,分别实现了不同的具体行为。
    • 它们将作为参数传递给 higherOrderFunction,使 higherOrderFunction 展现出不同的行为。
  3. main 函数
    • 首先调用 higherOrderFunction(function1),此时 higherOrderFunction 内部调用 function1,输出 “这是 function1 的行为”。
    • 然后调用 higherOrderFunction(function2),此时 higherOrderFunction 内部调用 function2,输出 “这是 function2 的行为”。