有没有人可以解释这段代码呢?????

xmge · · 791 次点击
xmge
欲戴王冠 必承其重
通过测试,下面执行的概率远远大于上面协程的执行概率。 ```go package main import ( "testing" "fmt" ) func GoTest() bool { c := make(chan bool) content := make(chan bool) go func() { <-c content <- false }() go func() { <-c content <- true }() c <- true return <-content } func TestChannel(t *testing.T) { result := map[bool]float64{true:0,false:0} for i :=0; i <= 10000; i++ { if GoTest() { result[true] ++ }else { result[false]++ } } fmt.Println(result) fmt.Printf("true概率:%f%s\n",result[true]/10000 *100,"%") fmt.Printf("false概率:%f%s\n",result[false]/10000 * 100,"%") } ``` result ``` map[true:9200 false:801] true概率:92.000000% false概率:8.010000% ```
#7
更多评论
xmge
欲戴王冠 必承其重
##### 代码并行执行时,执行顺序不定,以下代码输出无规律 ```go package main import ( "fmt" "time" ) func main() { go func() { fmt.Println(1) }() go func() { fmt.Println(2) }() go func() { fmt.Println(3) }() time.Sleep(time.Second * 1) } ```
#1
两种可能 如果先执行27行,则输出:a, 1, b, 2, c, 3, d, 4 如果先执行18行,则什么都不输出
#2