给定一个长度为 N 的通道,我只想在它未满时才写入它。否则,我将丢弃此数据包并处理下一个数据包。
这在 GOlang 中可能吗
您可以使用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
}
}
}
事后我知道,但这正是OverflowingChannel
我编写的帮助程序包中的类型所实现的。它有效地使用了上面的选择技巧。