我在一小段代码中使用它来工作,没有它,程序就会继续下一行,而无需等待计时器完成。time.After()下面是一个示例:package mainimport ( "fmt" "time")func main() { a := 1 fmt.Println("Starting") <-time.After(time.Second * 2) fmt.Println("Printed after 2 seconds")}
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
运算符用于等待通道的响应。在此代码中,它用于等待 将在 X 时间后馈送的通道。<-time.After
您可以了解有关Go之旅中@Marc提到的频道的更多信息。请注意,如果您不处理多个通道结果(使用 as ),则可以将其替换为同步语句。<-time.After(time.Second * 2)time.Sleep(time.Second * 2)select
通常用于将涉及一个或多个通道的异步操作的结果超时,如下所示:time.After
func doLongCalculations() (int, error) {
resultchan := make(chan int)
defer close(resultchan)
go calculateSomething(resultchan)
select {
case <-time.After(time.Second * 2):
return nil, fmt.Errorf("operation timed out")
case result := <-resultchan
return result, nil
}
}
同样,我们强烈建议您参加Go之旅,以了解Go的基本:)
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消