Go 语言支持闭包,它是一个函数和与其相关的引用环境组合的实体。它可以访问其包含函数中定义的变量,即使在其包含函数已经结束运行后。在 Go 中,闭包可以通过将函数作为参数传递给另一个函数来实现。


举个例子:

package main


import "fmt"


func outerFunc(x int) func(int) int {

return func(y int) int {

return x + y

}

}


func main() {

closure := outerFunc(10)

result := closure(20)

fmt.Println(result) // Output: 30

}

在上面的代码中,函数 outerFunc 返回一个内部函数,该内部函数可以访问 outerFunc 中的变量 x。我们通过调用 outerFunc 并将结果分配给变量 closure 来实现闭包。