1
select caseステートメントでチャネルペアの割り当てを行う方法はありますか?selectステートメントでのゴランチャネルペアの割り当て
selectステートメントの外では、次のようなことができますが、select caseステートメントでは機能しないようです。
var c1 = make(chan int)
var c2 = make(chan int)
go func() {
c1 <- 11111
}()
go func() {
c2 <- 22222
}()
select {
case a,b := <- c1, <- c2:
fmt.Println(a,b)
}
は何かが私が間違っているのがあるか、これは新しいアグリゲータチャネルを形成することなく、単に不可能です。
var c1 = make(chan int)
var c2 = make(chan int)
a,b := <- c1, <- c2
なぜ私は次の操作を行うことができませんか?
最後の目標は、両方のチャネルが準備されるのを簡単に待つことです。
いいえ、2つのチャンネルを同時に選択することはできません:https://golang.org/ref/spec#Select_statements – JimB
どういう意味でしょう、そのタイプのセマンティクスはどういう意味ですか? _both_チャンネルが受信の準備ができている場合にのみ有効ですか?それがあなたのために起こっている(またはあなたがファンインが必要な)場合、設計上の問題のように思えます。 – Kaedys
クイック回答ありがとうございます。 うん。私は一種のファンインレイアウトに行くつもりだった。私は、2つのチャンネルを同時に選択することはできないと結論づけています。 –