go - 对于回调,将通道作为数据通过其他通道传递
问题描述
我正在尝试将通道作为成员包含到结构中。当一个启动器通过通道将结构的实例传递给不同的 goroutine 时(将同时有多个启动器),该结构的实例将被逐步处理。通道成员将用作回调,将每个步骤的结果返回给发起者。
那么,通过其他渠道将渠道作为数据传递是一种好习惯吗?我应该改用频道的指针吗?有没有其他款式推荐?
=================一些额外的想法==============
比较有一个全局同步。映射启动器到回调通道以供每个 goroutines 查找,我真的应该通过通道发送回调通道吗?
解决方案
这不是一个坏习惯。将一个通道通过另一个通道并使用它来收集结果是完全可以的。
请注意,您所描述的并不完全是回调,因为 go 例程不调用任何内容。它只是在通过通道传输的通道中写入数据。
如果您在通道中传递了一个函数并且 go 例程会调用它,那么您将有一个回调。
推荐阅读
- python - 如何将此打印语句转换为数据框?Python NLP LSA 主题
- javascript - html没有附加到弹出窗口上的轮播
- python - 为什么这是错误的?UnboundLocalError:分配前引用的局部变量“xxx”
- javascript - 从数组中的数组中删除项
- cytoscape.js - 聚焦/放大图形的一部分或一组特定的节点或单个节点
- node.js - 创建嵌套的月光模式
- fortran - 循环可以在开头有标签吗
- javascript - 为什么不存储 HTMLElement 属性?
- javascript - 使用来自服务器的数据在客户端绘制曲线
- python - Sqlalchemy - 插入一对值,如果已经存在则返回