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

__Golang__ · · 1003 次点击
<a href="/user/onsunday" title="@onsunday">@onsunday</a> 传参方式的m1和m2 print结果也是m1 CCC m2 CBA 对m2而言我以为三个defer执行时user值是确定的,为users的最后一个元素{&#34;C&#34;}, 就算传参复制struct,复制的也都是{&#34;C&#34;} ,预测打印结果是CCC,可是不是,不能理解
#4
更多评论
m1,m2都共用一个环境user(类似于闭包),defer注册后是从函数结束处开始调用的,所以第二个defer处输出ABC,第一个defer处输出CCC,我怀疑是range指针已经在user末尾,所以打印了三个CCC————新手入坑,纯属个人间接,有误希望大牛指出
#1
思来想去还是没吃透其中的原理,还是希望有大牛来仔细讲解一下
#2