如何理解两个for的输出问题

__Golang__ · · 1004 次点击
range 一次 defer中的参数就已经传进去, 只是方法还未执行。 比如 range第一遍是,defer 的 m2(User{name:"A"}) range第二遍是,defer 的 m2(User{name:"B"}) range第三遍是,defer 的 m2(User{name:"c"})
#5
更多评论
m1,m2都共用一个环境user(类似于闭包),defer注册后是从函数结束处开始调用的,所以第二个defer处输出ABC,第一个defer处输出CCC,我怀疑是range指针已经在user末尾,所以打印了三个CCC————新手入坑,纯属个人间接,有误希望大牛指出
#1
思来想去还是没吃透其中的原理,还是希望有大牛来仔细讲解一下
#2