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

原创
2018/03/08 11:37
阅读数 1.8K

先看代码:

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

 

可见:

1. for 循环变量只有一份 

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

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

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

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

展开阅读全文
Go
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
打赏
2 评论
3 收藏
0
分享
返回顶部
顶部