0
我写了一个封装了一堆逻辑和功能的SDK。在Go中使用通道处理事件
通常,我会使用事件侦听器/回调函数向使用SDK的应用程序提供反馈,但这在Go中不是惯用的。
这是我的理解,渠道和goroutines填补回调的空白,但是什么是一个方法来实现呢?
举例来说,我的SDK有许多我想通知主应用程序的事件。我会使用一个基于Event
结构的通道吗?该Event
将包含指定事件类型的_type
字段,然后data
类型的interface{}
字段,类似于Java中的Object
。接收器会检查类型并相应地投射数据。
无论是上述方法还是一个事件通道,应用程序都会监听与其关联的任何通道。
为了记录我更喜欢前一种方法,但不确定它的实现。
有没有人实现过这之前,你是如何实现的?
Go中没有任何单一的回调函数。由于某种原因,Go对函数式编程提供了一流的支持。甚至标准库使用回调的数量也很多(例如,整个HTTP服务器实现基于处理程序回调)。频道很棒,但他们不需要习惯功能性编程的_exclusion_。 – Kaedys
因为'interface {}'包含一个类型和值,所以不需要'Event'类型。该应用可以在“interface {}”值上键入开关或输入assert。 –