如下代码为何输出3?
for i:=0;i<3;i++{
defer func() {
fmt.Println(i)
}()
}
}
更多评论
defer表示最后才会执行,也就是for循环了3次,但是defe会被r放入一个类似栈结构中, 然后for结束(函数结束)才执行defer,所以输出是3.
建议去读一下go语言圣经这本书,基本覆盖了所有基础知识
#3