代碼如下:packagemainimport("fmt""sync""time")vara=[...]int{1,2,3,4,5}funcRun(){fmt.Println("begin")varwgsync.WaitGroupwg.Add(len(a))for_,i:=rangea{/*gofunc(iint){//函數(shù)變量是以值的方式傳遞的fmt.Printf("getvalue%d\n",i)time.Sleep(time.Second)wg.Done()}(i)*/gofunc(){fmt.Printf("getvalue%d\n",i)time.Sleep(time.Second)wg.Done()}()}wg.Wait()fmt.Println("end")}funcmain(){Run()}運(yùn)行結(jié)果輸出:begingetvalue5getvalue5getvalue5getvalue5getvalue5end不給匿名函數(shù)傳參的話,為什么只能獲取最后一個(gè)值,其中原理還是想不太明白,請各位大哥給講解下,謝謝!?。?
go 閉包問題
慕運(yùn)維8079593
2019-08-05 22:46:32