Golang 闭包

钾肥尔德 · · 701 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main

import (
    "fmt"
)

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

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

输出:

API server listening at: 127.0.0.1:26756
0 0 0
1 1 -2
3 2 -6
6 3 -12
10 4 -20
15 5 -30
21 6 -42
28 7 -56
36 8 -72
45 9 -90

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:钾肥尔德

查看原文:Golang 闭包

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

701 次点击  
加入收藏 微博
上一篇:ES---golang
1 回复  |  直到 2019-03-01 16:29:05
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传