Timeouts are import for programs that connect to external resources or that otherwise need to bound execution time. Implementing timeouts in Go is easy and elegant thanks to channels and select
package main import ( "fmt" "time" ) func main() { c1 := make(chan string, 1) go func() { // time.Sleep(time.Second * 2) c1 <- "result 1" }() select { case res := <-c1: fmt.Println(res) case <-time.After(time.Second * 1): fmt.Println("time out 1") } c2 := make(chan string, 1) go func() { time.Sleep(time.Second * 2) c2 <- "result 2" }() select { case res := <-c2: fmt.Println(res) case <-time.After(time.Second * 3): fmt.Println("time out 2") } }
result 1 result 1
总结 :
1 : ....
有疑问加站长微信联系(非本文作者)