golang自學之路(goroutine之二)8

func main() {
	for i := 0; i < 3; i++ {
		go func() {
			fmt.Println(i)
		}()
	}
	time.Sleep(time.Second)
}

乍一看,以爲代碼輸出:

1

2

3

運行結果:

3

3

3

那是因爲先執行的函數,當運行到

time.Sleep(time.Second),這個位置,i的之已經是3了,gorouine才執行。

 

修改如下,輸出:1 2 3

func main() {
	for i := 0; i < 3; i++ {
		go func(v int) {
			fmt.Println(v)
		}(i)
	}
	time.Sleep(time.Second)
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章