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

Can you programmatically determine the sender of a value down a go channel from the receiver?

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

如果此通道可能是无缓冲通道,您能否找到相应的发件人,就像您正在接收一个值一样,您无法继续前进,直到在那个确切时间有一个发件人发送。

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

谢谢

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

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