golang中闭包的坑

46 阅读1分钟
func TestI(t *testing.T) {
	for i := 0; i < 100; i++ {
		go func() {
			fmt.Println(i)
		}()
	}
	time.Sleep(1 * time.Second)
}

打印出来的值:不一定,但是很多都是100

面试题:

func main(){
        for i := 0; i < 100; i++ {
		go func() {
			fmt.Println(i)
		}()
	}
}

这段代码打印出啥:
1.要是回答什么都不会,说明他很细心,注意到main函数运行完了就结束了
2.要是回答10,那说明他遇到过,知道这个坑
3.要是回答不一定是啥,我就可以继续问为什么,接着问Goroutine调度策略