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

__Golang__ · · 975 次点击
func TimeConst() { i := 123 var now *int = &i fmt.Println("1", now) defer func(t *int) { fmt.Println("2", t) }(now) ii := 456 now = &ii fmt.Println("3", now) } func main() { TimeConst() } 看now的地址值
#7
更多评论
m1,m2都共用一个环境user(类似于闭包),defer注册后是从函数结束处开始调用的,所以第二个defer处输出ABC,第一个defer处输出CCC,我怀疑是range指针已经在user末尾,所以打印了三个CCC————新手入坑,纯属个人间接,有误希望大牛指出
#1
思来想去还是没吃透其中的原理,还是希望有大牛来仔细讲解一下
#2