golang 闭包

go语言中函数也是一种数据类型,也可以像变量一样,操作。下面代码给变量赋值了一个函数

var test = func(a int, b int) (int, float64) {
    return 0, 0
}

func main() {
    test(1, 2)
}

函数也可以当做参数,或者返回值来使用。

func test(f func(i int) int) {
    f(1)

}
func testInner(i int) int {
    fmt.Println(i)
    return i
}
func main() {
    test(testInner)
    return
}

当一个函数的返回值是一个函数的时候,其实叫做闭包。

type testInner func(i int) int

func test() testInner {
    return func(i int) int {
        return 0
    }

}
func main() {
    s := test()
    ret := s(1)
    fmt.Println(ret)
    return
}
原文地址:https://www.cnblogs.com/Nolover/p/12582767.html