给定一个长度为N的通道,我只想在它未满时写入它。否则我将丢弃此数据包并处理下一个数据包。
这在GOlang中是否可行
答案 0 :(得分:18)
您可以使用select
。例如:
package main
func main() {
ch := make(chan int, 2)
for i := 0; i < 10; i++ {
select {
case ch <- i:
// process this packet
println(i)
default:
println("full")
// skip the packet and continue
}
}
}
答案 1 :(得分:0)
在我知道的事实之后,但这正是我编写的帮助程序包中OverflowingChannel
类型实现的内容。它有效地使用了上面的选择技巧。