方式1
timeOut1.go
的第一部分显示如下代码:
timeOut1.go
第二段代码如下:
的第三段包含如下代码:
time.After()
函数调用的目地是等待指定时间。这个例子中,您不用关心 time.After()
返回的实际值,但实际上 time.After()
函数调用介绍意味着超时了。例子中由于 time.After()
函数指定的值小于上节以 goroutine 方式执行的 time.Sleep()
调用中使用的值,您极有可能得到一个超时信息。
上面这段代码执行一个 goroutine 并使用 time.After(4 * time.Second)
定义了一个 4 秒的超时期限,由于 time.Sleep()
的调用,这个goroutine 将执行大约 3 秒。如果 time.After(4 * time.Second)
调用的返回在您从 select
块的第一个分支里的 c2 channel 获得值之后,那么就不会超时;否则,将超时!然而,在这个例子中,time.After()
调用的值提供了足够的时间对于 调用的返回,因此您极可能不会得到一个超时信息。
执行 timeOut1.go
产生如下输出: