一架梯子,一头程序猿,仰望星空!
Golang高级特性面试题 > 内容正文

Go语言的闭包是什么?它有什么用处?


问题简答

很多开发语言都有闭包函数特性,Go语言的闭包函数作用也是类似的,其实就是一个匿名函数,它可以访问闭包函数外部作用域的变量。

问题详解:

Go闭包函数作用:

  • 封装状态:闭包可以保存其外部作用域的状态,以便在以后使用。
  • 支持高阶函数:闭包可以作为参数或返回值传递给其他函数,从而实现高阶函数。

Go闭包函数例子

package main

import "fmt"

func outerFunc() func(int) int {
    x := 10
    // 返回一个闭包函数
    return func(y int) int {
        // 引用了函数外部变量x,outerFunc函数返回了,也可以正常引用变量x
        return x + y
    }
}

func main() {
    // 获得闭包函数
    innerFunc := outerFunc()
    // 调用闭包函数
    result := innerFunc(20)
    fmt.Println(result)
}