如何判断频道是否有可供我读取的值?

我不想在阅读频道时阻塞.我想看看它是否有价值.如果真的有,我会读的.如果它还没有,我会做些别的事情,稍后再查看.

推荐答案

WARNING:这不再准确,请参见下面的答案.

From the docs:

如果接收表达式用于 的赋值或初始化 表格

x, ok = <-ch
x, ok := <-ch
var x, ok = <-ch

接收操作变为 无阻塞.如果操作可以 继续,布尔变量ok将 设置为true,并且该值存储在 x;否则ok设置为false和x 设置为其类型的零值

Go相关问答推荐

如何使用Docker Compose配置Go,使main. go文件位于/CMD文件夹中

读取JSON数据并在网页上显示

Golang测试容器,无法使网络正常工作

如何在GoFr中为生产和本地环境设置不同的配置?

使用一元或服务器流将切片从GRPC服务器返回到客户端

在GO中创建[]字符串类型的变量

创建服务时云运行触发器执行失败

如何获取集群外go Kubernetes客户端的当前命名空间?

如何将任何类型的数据值传递到 Golang 中的 GRPC Protobuf struct ?

一个Go module可以和之前的非module模块发布在同一个路径下吗?

golang中如何声明多个接口约束?

MQTT 客户端没有收到另一个客户端发送的消息

当图像是对象数组的元素时,如何显示存储为页面资源的图像?

使用 os/exec 和在命令行执行之间的结果莫名其妙地不同

Go泛型:无效的复合文字

Golang:如何判断通过缓冲通道进行通信时生产者或消费者是否较慢?

不能在 *gorm.db 而不是 gorm.db 上使用 WithContext(ctx) 方法

级联调用泛型函数时的泛型类型推断

无限期运行 Go routine (完成后重新启动)

有没有办法在golang中映射一组对象?