如果将其删除,
time.Sleep则不会给
say("world")goroutine运行的机会。goroutine调度程序不是抢占式的。您的goroutine必须放弃控制才能运行另一个goroutine。放弃控制的一种方法是奔跑time.Sleep。
如果
time.Sleep从
say函数中取出,则主goroutine将运行5次而不会放弃对辅助goroutine的控制,然后当主goroutine从
say程序返回时退出,因为没有任何东西可以使程序保持活动状态。

如果将其删除,
time.Sleep则不会给
say("world")goroutine运行的机会。goroutine调度程序不是抢占式的。您的goroutine必须放弃控制才能运行另一个goroutine。放弃控制的一种方法是奔跑time.Sleep。
如果
time.Sleep从
say函数中取出,则主goroutine将运行5次而不会放弃对辅助goroutine的控制,然后当主goroutine从
say程序返回时退出,因为没有任何东西可以使程序保持活动状态。