代码拉取完成,页面将自动刷新
package main
// Timeouts are important for programs that connect to external
// resources or that otherwise need to bound execution time.
import (
"fmt"
"time"
)
func main() {
// suppose we're executing an external call that returns its result
// on a channel c1 after 2s. Note that the channel is buffered, so the
// send in the goroutine is nonblocking. This is a common pattern to
// prevent goroutine leaks in case the channel is never read.
c1 := make(chan string, 1)
go func() {
time.Sleep(2 * time.Second)
c1 <- "result 1"
}()
// Here's the select implementing a timeout
// res := <- c1 awaits the result and <- time.After awaits a value
// to be sent after the timeout of 1s.
// Since select proceeds with the first receive that's ready, we'll
// take the timeout case if the operation takes more than the allowed 1s.
select {
case res := <-c1:
fmt.Println(res)
case <-time.After(1 * time.Second):
fmt.Println("timeout 1")
}
// If we allow a longer timeout of 3s, then the receive from c2
// will succeed and we'll print the result
c2 := make(chan string, 1)
go func() {
time.Sleep(2 * time.Second)
c2 <- "result 2"
}()
select {
case res := <-c2:
fmt.Println(res)
case <-time.After(3 * time.Second):
fmt.Println("timeout 2")
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。