有没有一种方法可以在不实际尝试发送的情况下测试go通道发送的失败?标准的非阻塞发送是这样的:
msg := "hi"
select {
case messages <- msg:
fmt.Println("sent message", msg)
default:
fmt.Println("no message sent")
}问题是,我需要让"msg“准备好发送,以便测试通道。
我想测试一下,发送是否会以一种不需要"msg“准备发送的方式失败。
发布于 2015-03-13 01:18:40
这在一般情况下是没有好处的,因为你会有一场比赛。在生成msg之后,信道可能不再准备发送。
如果你需要这个模式,你要么需要第二个通道来发送信号,
select {
case <-ready:
msg := generateMsg()
messages <- msg
fmt.Println("sent message", msg)
default:
fmt.Println("no message sent")
}或者,您可以使用sync.Cond
https://stackoverflow.com/questions/29016118
复制相似问题