select_statement.go 378 B

123456789101112131415161718192021222324
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. ch := make(chan string)
  8. // 模拟一个耗时 2 秒的慢任务
  9. go func() {
  10. time.Sleep(2 * time.Second)
  11. ch <- "job done"
  12. }()
  13. // 用 select 实现 1 秒超时
  14. select {
  15. case res := <-ch:
  16. fmt.Println("received:", res)
  17. case <-time.After(1 * time.Second):
  18. fmt.Println("timeout: 1s 内没有收到结果")
  19. }
  20. }