美文网首页go学习Go lang学习
Go lang 学习,函数闭包

Go lang 学习,函数闭包

作者: SHAN某人 | 来源:发表于2017-12-22 16:27 被阅读14次

Go 函数可以是闭包的。闭包是一个函数值,它来自函数体的外部的变量引用。 函数可以对这个引用值进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。

例如,函数 adder 返回一个闭包。每个闭包都被绑定到其各自的 sum 变量上。

package main

import "fmt"

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    pos, neg := adder(), adder()
    for i := 0; i < 10; i++ {
        fmt.Println(
            pos(i),
            neg(-2*i),
        )
    }
}

运行结果

0 0
1 -2
3 -6
6 -12
10 -20
15 -30
21 -42
28 -56
36 -72
45 -90

利用函数闭包实现求斐波那契数列第n项值

package main

import "fmt"

func febonaci() func(int) int {
    x1  :=0  // febonaci(x-1)
    x2  :=1  // febonaci(x-2)
    sum := 0
    return func(x int) int {
        sum = x1 + x2
        x1 = x2
        x2 =sum
        return sum
    }
}

func main() {
    fnum := febonaci()
    for i := 0; i < 10; i++ {
        fmt.Println(fnum(i))
    }
}

运行结果

1
2
3
5
8
13
21
34
55
89

相关文章

  • Go lang 学习,函数闭包

    Go 函数可以是闭包的。闭包是一个函数值,它来自函数体的外部的变量引用。 函数可以对这个引用值进行访问和赋值;换句...

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

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

  • 26. 函数闭包

    如果非必要,尽量不要在程序中使用闭包。go函数可以是一个闭包。闭包是一个函数值,它引用了函数体之外的变量。这个函数...

  • Golang学习笔记-函数

    Go函数定义格式如下: 例如: Go可以很灵活的创建函数,并作为另外一个函数的实参: Go支持匿名函数,可作为闭包...

  • Go语言中的函数 为什么是一等公民

    关键点 Go语言中,支持: 普通函数 匿名函数 闭包 在Go语言中,函数属于一等公民(first-class)? ...

  • 08. Go极简教程 函数及闭包

    Golang中, 函数是一等公民, 以下简要描述函数的使用 函数的声明 闭包 引用官方的解释: Go 函数可以是闭...

  • Go语言探索 - 7(原创)

    Go语言基础系列博客用到的所有示例代码 在 上一篇文章主要学习了Go语言的函数定义、值传递和引用传递以及闭包函数。...

  • go匿名函数(闭包)

    GO语言的匿名函数(anonymous function), 其实就是闭包.是指不需要定义函数名的一种函数实现方式...

  • GO函数-闭包(二)

    闭包是在其词法上下文中引用了自由变量的函数。或者说是函数和其引用的环境的组合体。 输出: 如上边案例:test 返...

  • Go 语言函数闭包

    Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。 匿名函数的优越性在于可以直接使用函数内的...

网友评论

    本文标题:Go lang 学习,函数闭包

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