1
我試圖抓住goroutines。拿這個代碼:沒有看到從goroutines預期的副作用
package main
import "fmt"
var (
b1 []float64
b2 []float64
)
func main() {
go fill(&b1, 10)
go fill(&b2, 10)
fmt.Println(b1,b2)
var s string
fmt.Scanln(&s)
}
func fill(a *[]float64, n int) {
for i:=0; i<n; i++ {
*a = append(*a, rand.Float64()*100)
}
}
正如你所看到的,我試圖填充兩個切片。但以這種方式運行時(使用go fill()
),它會打印兩個空片。爲什麼這不起作用?
你開始不能保證完成,直到你等待它的任何夠程與'sync.WaitGroup',頻道或其他機制。 – twotwotwo