0
我寫了一個封裝了一堆邏輯和功能的SDK。在Go中使用通道處理事件
通常,我會使用事件偵聽器/回調函數向使用SDK的應用程序提供反饋,但這在Go中不是慣用的。
這是我的理解,渠道和goroutines填補回調的空白,但是什麼是一個方法來實現呢?
舉例來說,我的SDK有許多我想通知主應用程序的事件。我會使用一個基於Event
結構的通道嗎?該Event
將包含指定事件類型的_type
字段,然後data
類型的interface{}
字段,類似於Java中的Object
。接收器會檢查類型並相應地投射數據。
無論是上述方法還是一個事件通道,應用程序都會監聽與其關聯的任何通道。
爲了記錄我更喜歡前一種方法,但不確定它的實現。
有沒有人實現過這之前,你是如何實現的?
Go中沒有任何單一的回調函數。由於某種原因,Go對函數式編程提供了一流的支持。甚至標準庫使用回調的數量也很多(例如,整個HTTP服務器實現基於處理程序回調)。頻道很棒,但他們不需要習慣功能性編程的_exclusion_。 – Kaedys
因爲'interface {}'包含一個類型和值,所以不需要'Event'類型。該應用可以在「interface {}」值上鍵入開關或輸入assert。 –