Go 使用异常选择的意外行为

Go 使用异常选择的意外行为,go,concurrency,channel,Go,Concurrency,Channel,我正在编写一些代码,将数据从一个通道传递到另一个通道。根据一些直觉,我希望以下代码能够工作(other是一个足够大的缓冲通道,out是源通道): 用于{ 挑选{ 案例其他当您有以下情况时: ch := make(chan int, 10) // ... select { case ch <- <-out: fmt.Println("C") default: fmt.Println("D") } ch := make(chan

我正在编写一些代码,将数据从一个通道传递到另一个通道。根据一些直觉,我希望以下代码能够工作(
other
是一个足够大的缓冲通道,
out
是源通道):

用于{
挑选{
案例其他当您有以下情况时:

ch := make(chan int, 10)
// ...

select {
case ch <- <-out:
    fmt.Println("C")
default:
    fmt.Println("D")
}
ch := make(chan int, 2)