没有办法中断
time.Sleep,但是,您可以使用
time.After和
select语句来获取所需的功能。
一个简单的例子来展示基本思想:
package mainimport ( "fmt" "time")func main() { timeoutchan := make(chan bool) go func() { <-time.After(2 * time.Second) timeoutchan <- true }() select { case <-timeoutchan: break case <-time.After(10 * time.Second): break } fmt.Println("Hello, playground")}http://play.golang.org/p/7uKfItZbKG
在此示例中,我们生成了一个信令goroutine来告知main停止暂停。主要是在两个频道
timeoutchan(我们的信号)和所返回的频道上等待和收听
time.After。当它在这些通道中的任何一个上接收时,它将脱离选择并继续执行。



