码迷,mamicode.com
首页 > 其他好文 > 详细

golang之匿名函数

时间:2016-09-23 12:56:11      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

 1 package main
 2 
 3 import "fmt"
 4 
 5 /* squares返回一个匿名函数
 6  * 该匿名函数每次调用返回下一个数的平方
 7  * func name(parameter-list) (result-list) {
 8  *     body
 9  * }
10  */
11 
12 func squares() func() int {
13     var x int
14     return func() int {
15         x++
16         return x * x
17     }
18 }
19 
20 func main() {
21     f := squares() //返回函数指针
22     fmt.Printf("%v\n", f)
23     fmt.Println(f())
24     fmt.Println(f())
25     fmt.Println(f())
26     fmt.Println(f())
27     fmt.Printf("%v\n", f)
28 }

执行结果:

1 0x401620
2 1
3 4
4 9
5 16
6 0x401620

   通过这个例子, 我们看到变量的生命周期不由它的作用域决定:squares返回后, 变量x仍然隐式的存在于f中;

 

golang之匿名函数

标签:

原文地址:http://www.cnblogs.com/chris-cp/p/5899313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!