首页 > 技术文章 > 闭包函数

xiongying4 2019-12-10 15:12 原文

一、定义

闭包函数:定义在函数内部,对外部作用域有引用

内层函数

import "fmt"

func main(){

}

//go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字
func test(a int){
    func(){
        fmt.Println("我是内置函数")
    }()  //  这个括号是用来调用匿名函数的
}

闭包函数

func test(a int) (func()){  // func()表示返回值部分
    b := func(){
        fmt.Println(a)
        fmt.Println("我是闭包函数")
    }
    return b
}

定义一个函数,传入函数,返回函数

func test(a func()) func(){
    b := func(){
        fmt.Println("我先执行")
        a()
        fmt.Println("函数执行完了")
    }
    return b
}
func test2(){
    fmt.Println("xxx")
}

给类型命别名

type MyFunc  func(a int,b int) func()

type MyInt int
func test() (MyFunc)  {

    c:= func(a int,b int) func(){

        return func() {

        }
    }
    return c

}
func main() {
}

 

推荐阅读