//相對應for 循環 goroutine跑到慢 因此這裏很大機率只會打印最後一條數據 func goRun() { values := []int{1, 2, 3} for _, v := range values { go func() { fmt.Println(v) }() } } //解決1 將參數傳入匿名函數 這樣參數就能夠壓棧了 func goRun2() { values := []int{1, 2, 3} for _, v := range values { go func(i int) { fmt.Println(i) }(v) } } //解決2 將參數賦值給臨時變量 也能夠將參數壓棧 func goRun3() { values := []int{1, 2, 3, 4, 5, 6} for _, v := range values { tmp := v go func() { fmt.Println(tmp) }() } } func main() { //goRun() //goRun2() goRun3() time.Sleep(time.Second) }