Go では、チャネルから受信しようとすると、チャネルに何らかの値が入るまでプログラムの実行が停止します。ただし、私がやりたいことは、プログラムの実行を継続させ、チャネルに値がある場合はそれに基づいて行動することです。
私が考えている疑似コードは次のようなものです。
mychan := make(chan int, 1)
go someGoRoutine(mychan) // This might put some value in mychan at some point
for {
if something in "mychan" {
// Remove the element from "mychan" and process it
} else {
// Other code
}
}
私が理解しているようにv <- mychan
、値が利用可能になるまでプログラムの実行がブロックされるため、単純に使用することはできません。Goでこれを行う方法は何でしょうか?