博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言闭包的小例子
阅读量:6814 次
发布时间:2019-06-26

本文共 880 字,大约阅读时间需要 2 分钟。

  hot3.png

 例子1

package mainimport (	"fmt")func main() {	f := closer(10)	//fmt.Println(f(1))	//fmt.Println(f(2))	f(1)	f(2)}func closer(x int) func(int) int {	fmt.Printf("%p\n", &x)	return func(y int) int {		fmt.Printf("%p\n", &x)		return x + y	}}
打印结果是:
0x118400e80x118400e80x118400e8

 例子2

package mainimport (	"fmt")func main() {	for i := 0; i < 3; i++ {		defer func() {			fmt.Println(i)		}()	}}
打印结果是:
333

 例子3

package mainimport (	"fmt")func main() {	var fs = [4]func(){}	for i := 0; i < 4; i++ {		defer fmt.Println("defer i =", i)		defer func() {			fmt.Println("defer closure i=", i)		}()		fs[i] = func() {			fmt.Println("close i = ", i)		}	}	for _, f := range fs {		f()	}}
打印结果:
close i =  4close i =  4close i =  4close i =  4defer closure i= 4defer i = 3defer closure i= 4defer i = 2defer closure i= 4defer i = 1defer closure i= 4defer i = 0
 

转载于:https://my.oschina.net/itfanr/blog/358392

你可能感兴趣的文章
96Boards(410C)中的Docker使用方法
查看>>
swift 里 1..2 和 1...2 的区别【chinaswift】
查看>>
我的友情链接
查看>>
有一种感情, 不叫爱情
查看>>
液晶屏幕清洗千万不要做的三种方法
查看>>
HttpServletRequest cannot be resolved to a type
查看>>
myBtatis --开篇
查看>>
oracle监听 listener的设置
查看>>
Mysql 主从复制 及 一些要注意的特殊设置
查看>>
缺陷修改引起问题的思考
查看>>
构建基于Nginx的web服务器
查看>>
5 Servlet
查看>>
百度创始人李彦宏:要做最好的中文搜索引擎
查看>>
3.26作业
查看>>
Python里的append和extend
查看>>
cut命令
查看>>
JavaScript强化教程-cookie对象
查看>>
MEMCACHE常用的命令
查看>>
docker 基础
查看>>
Angular基础(七) HTTP & Routing
查看>>