go代码示例:使用闭包来实现高阶函数

下面是一个使用闭包来实现高阶函数的代码示例:

package main

import "fmt"

// incrementGenerator 是一个高阶函数,返回一个闭包
func incrementGenerator() func() int {
    
    
    count := 0

    // 返回一个闭包函数
    return func() int {
    
    
        count++
        return count
    }
}

func main() {
    
    
    // 创建一个计数器
    counter := incrementGenerator()

    // 调用闭包函数并打印结果
    fmt.Println(counter()) // 输出 1
    fmt.Println(counter()) // 输出 2
    fmt.Println(counter()) // 输出 3
}

在上述代码中,incrementGenerator 是一个高阶函数,它返回一个闭包函数。

闭包函数内部定义了一个局部变量 count,并返回一个匿名函数。每次调用该匿名函数时,闭包函数内的 count 值会自增并返回。这样,每次调用闭包函数时都会返回一个递增的计数值。

main 函数中,我们调用 incrementGenerator 函数并将其返回值赋给 counter 变量。counter 现在持有一个闭包函数。我们可以多次调用 counter() 来获取递增的计数值,并将结果打印出来。

通过使用闭包实现高阶函数,我们可以创建并返回一个函数,使得该函数能够访问和修改其所在函数作用域中的局部变量。这种方式可以在函数内部维护一些状态或逻辑,并返回一个具有持久化状态的函数。

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/131148501