Go并发陷阱之i的到底等于几?
今天写bug时碰到一个Go并发陷阱,是一道很经典的面试题,那就是:func main() { for i := 0; i < 5; i++ { go func() { fmt.Println("current value: ", i) }() } time.Sleep(time.Second)}这段代码看起来会顺序输出0-4,但是其实打印出来的结果却是:当然结果也不一定就是图片的结果,为什么会这样?因为此时协程中读取的i和main中循环的i是相同的地址空间,这就有可能
原创
2022-03-28 23:13:58 ·
336 阅读 ·
1 评论