你能让Golang在写操作上丢弃数据包而不是阻塞吗?

你能让Golang在写操作上丢弃数据包而不是阻塞吗?,go,Go,给定一个长度为N的通道,我只想在它未满时写入它。否则我将丢弃此数据包并处理下一个数据包 这是否可能在GOlang中实现您可以使用选择。例如: package main func main() { ch := make(chan int, 2) for i := 0; i < 10; i++ { select { case ch <- i: // process this packet

给定一个长度为N的通道,我只想在它未满时写入它。否则我将丢弃此数据包并处理下一个数据包


这是否可能在GOlang中实现

您可以使用
选择
。例如:

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
        }
    }
}
主程序包
func main(){
ch:=制造(成交量,2)
对于i:=0;i<10;i++{
挑选{

case ch比我知道的要晚一点,但这正是我编写的helper包中的
OverflowingChannel
类型所实现的。它有效地使用了上面的select技巧

  • 代码:
  • 文件: