我编写了一个封装了大量逻辑和功能的SDK。
通常,我会使用事件监听器/回调来使用SDK向应用程序提供反馈,但这在Go中不是惯用的。
据我所知,频道和goroutines填补了回调的空白,但是实现这个的方法是什么?
比方说,我的SDK有许多我想通知主应用程序的事件。我会使用基于Event
结构的一个通道吗?此Event
将包含指定事件类型的_type
字段,然后是data
类型interface{}
字段,类似于Java中的Object
。接收器然后将检查类型并相应地转换数据。
无论是上述方法还是一个事件频道,应用程序都会监听它所关注的任何频道。
为了记录,我更喜欢前一种方法,但不确定它的实施方式。
以前是否有人实现了这一目标,你是如何实现的?
答案 0 :(得分:0)
看一下我的https://github.com/tideland/gocells。它是一个用于事件驱动应用程序的库。这里所谓的细胞以负责处理事件的行为开始,这些细胞是连接的。
也许你可以使用它或获得一些灵感。