Chinaunix首页 | 论坛 | 博客
  • 博客访问: 262685
  • 博文数量: 42
  • 博客积分: 2415
  • 博客等级: 大尉
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-13 14:14
文章分类

全部博文(42)

文章存档

2018年(1)

2017年(8)

2015年(3)

2012年(4)

2011年(11)

2010年(1)

2009年(5)

2008年(9)

我的朋友

分类: LINUX

2017-03-01 20:56:42


点击(此处)折叠或打开

  1. package main

  2. import "fmt"

  3. func adder() func(int) int{
  4.     sum:=0

  5.     return func(x int) int{
  6.         sum +=x
  7.         return sum
  8.     }
  9. }

  10. func main(){
  11.     a:=adder()
  12.     fmt.Println(a(9527))
  13. }
输出是9527,看到adder函数里面sum这个变量,突然想起来swift里闭包的说明,于是把sum赋值为1,果然结果变成了9528。
接下来必然就是这样

点击(此处)折叠或打开

  1. func adder(sum int) func(int) int{
  2.    
  3.     return func(x int) int{
  4.         sum +=x
  5.         return sum
  6.     }
  7. }

  8. func main(){
  9.     a:=adder(2)
  10.     fmt.Println(a(9527))
  11. }
打印结果是9529。

看来至少swift和golang在这里的处理一样的。

阅读(686) | 评论(0) | 转发(0) |
0

上一篇:标记一下

下一篇:vim-go的安装

给主人留下些什么吧!~~