Go中的事件处理使用频道

时间:2016-07-26 14:21:20

标签: go goroutine

我编写了一个封装了大量逻辑和功能的SDK。

通常,我会使用事件监听器/回调来使用SDK向应用程序提供反馈,但这在Go中不是惯用的。

据我所知,频道和goroutines填补了回调的空白,但是实现这个的方法是什么?

比方说,我的SDK有许多我想通知主应用程序的事件。我会使用基于Event结构的一个通道吗?此Event将包含指定事件类型的_type字段,然后是data类型interface{}字段,类似于Java中的Object。接收器然后将检查类型并相应地转换数据。

无论是上述方法还是一个事件频道,应用程序都会监听它所关注的任何频道。

为了记录,我更喜欢前一种方法,但不确定它的实施方式。

以前是否有人实现了这一目标,你是如何实现的?

1 个答案:

答案 0 :(得分:0)

看一下我的https://github.com/tideland/gocells。它是一个用于事件驱动应用程序的库。这里所谓的细胞以负责处理事件的行为开始,这些细胞是连接的。

也许你可以使用它或获得一些灵感。