golang的闭包

730阅读 0评论2017-03-01 wmytch
分类:LINUX


点击(此处)折叠或打开

  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在这里的处理一样的。

上一篇:标记一下
下一篇:vim-go的安装