Go-函数-闭包示例

2023-04-20 18:45:32 浏览数 (1)

闭包的示例代码

以下是一个完整的示例代码,它演示了如何使用闭包来实现一个简单的计数器:

代码语言:javascript复制
package main

import "fmt"

func counter() func() int {
    count := 0
    return func() int {
        count  
        return count
    }
}

func main() {
    c1 := counter()
    fmt.Println(c1()) // 输出:1
    fmt.Println(c1()) // 输出:2

    c2 := counter()
    fmt.Println(c2()) // 输出:1
    fmt.Println(c2()) // 输出:2
}

在上面的示例中,定义了一个函数 counter,它返回一个闭包,闭包引用了变量 count。然后将函数 counter 赋值给变量 c1,并调用两次变量 c1,每次调用都会返回一个递增的数字。接着将函数 counter 再次赋值给变量 c2,并调用两次变量 c2,每次调用也会返回一个递增的数字,但是它们与变量 c1 中返回的数字是相互独立的。

总结

闭包是 Go 语言中一种特殊的函数类型,它可以访问其定义时的上下文环境中的变量,并且可以在调用之间保持状态。闭包通常用于需要在程序中定义临时函数的情况。在使用闭包时需要注意变量的作用域和生命周期,避免出现意外的行为。

go

0 人点赞