Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:go:闭包

闭包

其他支持闭包的语言:Lua


定义一个函数时,它可以访问两类变量:全局变量和它定义时作用域内的局部变量。这些局部变量如果被函数引用,就会被「捕获」并绑定在这个函数上,形成闭包,即使原作用域已经结束,函数仍然可以访问这些变量。

闭包是可以多层嵌套的

// 多层闭包
package main
 
import "fmt"
 
func outer() func() func() {
    a := 1
    return func() func() {
        b := 2
        return func() {
            c := 3
            fmt.Println(a + b + c)  // 输出 6
        }
    }
}
 
func main() {
    outer()()()
}
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/go/闭包.txt · Last modified: 2025/05/13 06:52 by zhonghui