go - 对于回调,将 channel 作为数据通过其他 channel 传递

标签 go channel

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

2年前关闭。




Improve this question




我正在尝试将 channel 作为成员包含到结构中。当一个启动器通过 channel 将结构的实例传递给不同的 goroutine 时(将同时有多个启动器),该结构的实例将被逐步处理。
channel 成员将用作回调,将每个步骤的结果返回给发起者。

那么,通过其他 channel 将 channel 作为数据传递是一种好习惯吗?
我应该改用 channel 的指针吗?
有没有其他款式推荐?

=================一些额外的想法==============

比较有一个全局同步。映射启动器到回调 channel 以供每个 goroutines 查找,我真的应该通过 channel 发送回调 channel 吗?

最佳答案

这不是一个坏习惯。将一个 channel 通过另一个 channel 并使用它来收集结果是完全可以的。

请注意,您所描述的并不完全是回调,因为 go 例程不调用任何东西。它只是在通过 channel 传输的 channel 中写入数据。

如果您在 channel 中传递了一个函数并且 go 例程会调用它,那么您将有一个回调。

关于go - 对于回调,将 channel 作为数据通过其他 channel 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135817/

相关文章:

unit-testing - 具有 Google Cloud API 依赖项的单元测试代码

select - Go 中的 channel 阻塞是如何工作的?

go - Golang 中的取消模式

sftp - Jsch 错误 - 发送 channel 请求失败

go - 判断一个词是否是另一个的复数形式

go - falcore 热重启不会重新加载主代码

go - Handle 和 HandleFunc 有什么区别?

go - 在 golang 中实现全局热键?

java - 什么情况下 eventloop.inEventLoop() == false ?

go - 为什么所有的 goroutines 都在 sleep ?