<代码>//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。打印(“结束代码!”)
}
代码>