美文网首页
Go之闭包

Go之闭包

作者: 测试探索 | 来源:发表于2020-05-31 23:28 被阅读0次
闭包(closure):
  • 一个外层函数中,有内层函数,该内层函数中,会操作外层函数的局部变量(外层函数中的参数,或者外层函数中直接定义的变量),并且外层含糊的返回值就是这个内层函数,这个内层函数和外层函数的局部变量,统称为闭包结构。
  • 局部变量的生命周期会发生改变,正常的局部变量会随着函数调用而创建,随着函数的结束而销毁,但是闭包结构中的外层函数的局部变量并不会随着外层函数的结束而销毁,因为内层函数还要继续使用。
package main

import "fmt"

func main() {
    res1 := increment()
    fmt.Printf("res1的类型是:%T\n",res1)
    fmt.Println(res1)

    v1 := res1()
    fmt.Println(v1)

    v2 := res1()
    fmt.Println(v2)

}

func increment() func()int{ //外层函数
    //1.定义了一个局部变量
    i := 0
    //2.定义了一个匿名函数,给变量自增并且返回
    fun := func () int{  //内层函数
        i++
        return i
    }
    //返回该匿名函数
    return fun
}
//结果
res1的类型是:func() int
0x49fc50
1
2

相关文章

  • Go之闭包

    闭包(closure): 一个外层函数中,有内层函数,该内层函数中,会操作外层函数的局部变量(外层函数中的参数,或...

  • 第02天(函数、工程管理)_03

    11_函数类型.go 12_回调函数.go 13_匿名函数和闭包.go 14_闭包捕获外部变量的特点.go 15_...

  • golang

    golang中闭包的问题 熟悉go语言的开发者都知道,go的闭包是可以记录状态的。当我想用闭包来实现保存某一str...

  • go闭包

    这里的函数接受了一个int参数,返回了一个匿名函数。在调用addn时,返回了就是一个函数,需要再次传参调用执行。其...

  • go闭包

    闭包简单的说就是一个匿名函数+外部变量的引用,举例如下 示例一 package main import ( "...

  • go 闭包

    1.闭包的概念闭包并不是什么新奇的概念,它早在高级语言开始发展的年代就产生了。闭包(Closure)是词法闭包(L...

  • go闭包

    Go语言中闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放… ...

  • go 闭包

    基本介绍 闭包就是一个函数和与其相关的引用环境组合的一个整体(实体) 案例: 说明:1、AddUpper是一个函数...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • swift闭包学习

    闭包作为参数 参考 Swift学习之闭包

网友评论

      本文标题:Go之闭包

      本文链接:https://www.haomeiwen.com/subject/haedzhtx.html