Go的defer和方法修饰符的一个小坑


声明:本文转载自https://my.oschina.net/linker/blog/1631545,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

先看代码:

https://play.golang.org/p/GlM23bSW6zf

 

可见:

1. for 循环变量只有一份 

2. 单行的defer和go都是在当前时刻求值。

    如果方法的修饰符是一个指针,那么求值得到的必报是保存了这个指针的值的,如果指针指向内存发生变化,后续取得的数据也会变。

    如果方法的修饰符是一个对象,那么单行的defer和go在求值时刻,会保存这个对象,无论后续这个对象怎么变,取得数值是不变的。

3. 如果是 go/defer 后面跟一个 func()的形式,那么func()内部代码捕获的外部变量都是指针引用,我之前的Blog已经有详述,这里不再重复。

本文发表于2018年03月08日 22:44
(c)注:本文转载自https://my.oschina.net/linker/blog/1631545,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1768 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1