检查通道中是否有可用数据

如果通道中没有数据,接收操作会被阻塞。

如果您不想阻塞怎么办?

您可能会想到,可以在执行接收操作之前检查通道中是否有数据。

您不能在Go语言中这样做,因为它可能不会正确工作。在您执行完检查操作后到执行接收操作之间的时间里,别的协程可能拿走数据。

如果您想避免无限的等待,您可以使用select添加超时通道非阻塞等待

最后更新于