2 回答

TA貢獻1806條經驗 獲得超8個贊
解釋起來很簡單。您SayGreetings
使用 go 關鍵字調用兩次,這會導致 SayGreetings 函數的兩次并發執行。最后,您不必等到兩個功能都完成!您的代碼在調用兩個函數后只等待 2 秒,每個函數等待超過兩秒。所以你要么增加 main 的等待時間,要么等到兩個函數都完成

TA貢獻2041條經驗 獲得超4個贊
將睡眠時間增加到 time.Sleep(20 *time.Second)主要
package main
import (
"log"
"math/rand"
"time"
)
func SayGreetings(greeting string, times int) {
for i := 0; i < times; i++ {
log.Println(greeting)
d := time.Second * time.Duration(rand.Intn(5)) / 2
time.Sleep(d) // sleep for 0 to 2.5 seconds
}
}
func main() {
rand.Seed(time.Now).UnixNano())
log.SetFlags(0)
go SayGreetings("hi!", 10)
go SayGreetings("hello!", 10)
time.Sleep(20 * time.Second)
}
Output:
======
hi!
hi!
hello!
hello!
hi!
hello!
hi!
hello!
hello!
hi!
hello!
hi!
hi!
hello!
hello!
hello!
hi!
hello!
hi!
hi!
- 2 回答
- 0 關注
- 94 瀏覽
添加回答
舉報