Golang Daily - 闭包作用

落爺英雄遲暮 提交于 2019-12-03 01:45:33

一、什么是闭包

特征:
- 函数内部包含匿名子函数,子函数以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/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!