defer疑问

joraboy328 · · 2499 次点击
buscoop
纸上得来终觉浅,绝知此事要躬行!
你这里的defer作用域在for里面,要等for结束那一时,才defer
#2
更多评论
因为是在闭包里 所以它i取得是外层i的内存地址 建议你可以去看看闭包
#1
defer表示最后才会执行,也就是for循环了3次,但是defe会被r放入一个类似栈结构中, 然后for结束(函数结束)才执行defer,所以输出是3. 建议去读一下go语言圣经这本书,基本覆盖了所有基础知识
#3