闭包错误引用同一个变量问题怎么处理?

提问者:帅平 问题分类:面试刷题
闭包错误引用同一个变量问题怎么处理?
1 个回答
丢了爱情
丢了爱情
在每轮迭代中生成一个局部变量 i 。如果没有 i := i 这行,将会打印同一个变量。
func main() {
    for i := 0; i < 5; i++ {
        i := i
        defer func() {
            println(i)
        }()
    }
}
或者是通过函数参数传入 i 。
func main() {
    for i := 0; i < 5; i++ {
        defer func(i int) {
            println(i)
        }(i)
    }
}
发布于:5个月前 (11-29) IP属地:四川省
我来回答