8

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

这在 GOlang 中可能吗

4

2 回答 2

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
        }
    }
}
于 2013-10-02T21:51:22.933 回答
0

事后我知道,但这正是OverflowingChannel我编写的帮助程序包中的类型所实现的。它有效地使用了上面的选择技巧。

于 2014-03-02T04:01:01.047 回答