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 : ....
时间: 2024-10-09 18:32:00