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 关注
- 72 浏览
添加回答
举报