在 for a,b := range c 遍历中, a 和 b 在内存中只会存在一份,即之后每次循环时遍历到的数据都是以值覆盖的方式赋给 a 和 b,a,b 的内存地址始终不变。由于有这个特性,「for 循环里面如果开协程,不要直接把 a 或者 b 的地址传给协程」。解决办法:在每次循环时,创建一个临时变量。
最佳答案 2023-03-13 10:53
在 for a,b := range c 遍历中, a 和 b 在内存中只会存在一份,即之后每次循环时遍历到的数据都是以值覆盖的方式赋给 a 和 b,a,b 的内存地址始终不变。由于有这个特性,「for 循环里面如果开协程,不要直接把 a 或者 b 的地址传给协程」。解决办法:在每次循环时,创建一个临时变量。