golang中选择实现非阻塞及超时控制

  
 <代码>//select.go
  主要包
  
  导入(
  “fmt”
  “时间”//笆奔洹?
  )
  
  函数main () {//声明一个频道
  陈ch:=(int)//声明一个匿名函数,传入一个参数整型通道类型ch
  陈func (ch int) {
  ch & lt; - 1//往通道写入一个数据,此时阻塞
  }(ch)//由于goroutine执行太快,先让它睡1秒
  time . sleep (time.Second)
  
  选择{//读取ch,解除阻塞
  案例& lt; ch:
  fmt。打印(“来读ch !”)
  默认值:
  fmt。打印(“违约!”)
  }
  } 
  <人力资源/>   
 <代码>//select.go//整型通道类型ch一直处于读取状态,所以处于阻塞,使用选择实现超时控制
  主要包
  
  导入(
  “fmt”
  “时间”
  )
  
  函数main () {
  陈ch:=(int)//缓冲通道,1个元素前非阻塞
  超时:=(陈int, 1)
  
  去func () {
  time . sleep (time.Second)//写通道
  超时& lt; - 1
  } ()
  
  选择{//读通道
  案例& lt; ch:
  fmt。打印(“来读ch !”)//没有读到频道,实现超时控制
  案例& lt;超时:
  fmt。打印(“超时!”)
  }
  
  fmt。打印(“结束代码!”)
  }
   
  <人力资源/>   
 <代码>//select.go//使用还实现超时控制
  主要包
  
  导入(
  “fmt”
  “时间”
  )
  
  函数main () {
  陈ch:=(int)
  
  选择{
  案例& lt; ch:
  fmt。打印(“来读ch !”)
  & lt;还(time.Second):
  fmt。打印(“超时!”)
  }
  
  fmt。打印(“结束代码!”)
  }
   

golang中选择实现非阻塞及超时控制