Golang Daily - 闭包作用

一、什么是闭包

特征:
- 函数内部包含匿名子函数,子函数以return返回
- 子函数可以访问函数内部的局部变量
- 被子函数持有的局部变量不回被销毁

二、闭包的作用
优点
- 访问函数的私有变量
- 外部函数为全局函数的情况下,保证内部私有变量不被回收
类似类的封装,数据为私有变量,操作为return的匿名函数
缺点
- 内存占用,无法回收
三、示例

package main

import "fmt"

func intSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

func main() {

    nextInt := intSeq()

    fmt.Println(nextInt())
    fmt.Println(nextInt())
    fmt.Println(nextInt())

    newInts := intSeq()
    fmt.Println(newInts())
}

四、参考文章
https://www.golangprograms.com/closures-functions-in-golang.html
https://gobyexample.com/closures
https://omarkhawaja.com/understanding-function-closures-in-golang/

猜你喜欢

转载自www.cnblogs.com/neen/p/11769791.html