go - 您能否以编程方式确定值从接收方沿 go channel 发送的发送方?

标签 go channel

假设我有一个缓冲 channel ,不同的函数 {A、B、C 和 D} 在不同的时间向 channel 发送值。现在,如果我从 channel 读取通知,有什么方法可以确定它来自哪个发件人?从逻辑上讲,我会假设不,但我对 channel 内部结构的了解还不够多,无法知道什么是可能的?

如果这个 channel 可能是一个无缓冲的 channel ,您能否找到相应的发送者,就好像您正在接收一个值,您不能继续前进,直到有一个发送者在那个确切的时间发送。

唯一的方法是确保加载 delve 并查看当时正在运行的所有 goroutines 还是在每次发送到 channel 之前放置日志语句?

谢谢

最佳答案

无法判断是谁发送了您从 channel 收到的值。

但是如果您需要的话,它很容易实现。只需将值和发送者 ID 包装在一个结构中,并修改发送者以在 channel 上发送一个结构值,填充发送者 ID。

关于go - 您能否以编程方式确定值从接收方沿 go channel 发送的发送方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61407988/

相关文章:

Golang channel 让程序无限期等待

string - Go:理解字符串

go - 这个 go 并发示例中发生了什么?

asynchronous - Clojurescript:使用核心/异步 channel 以 block 的形式处理请求

Go:加载证书,使其成为 *x509.Certificate(能够签署其他证书)

android - 使用 android Wi-Fi Direct API : mChannel = mManager. initialize() 的问题

转到 channel : How to make this non-blocking?

mysql - 如何打开和关闭数据库连接

go - 如何将 []*type 传递给函数?

go - 使用DOS和DOSBox的IPX网络(在Raspbian下)