我正在開發一種物聯網服務,該服務需要能夠通過某種協議發送消息。我的目標是讓我更容易在這些協議實現之間切換。在物聯網中,用于消息傳遞的兩種常見協議是MQTT和WAMP。用于這些協議的兩個流行的Go庫都有相似的接口,但是它們各自的函數實現的參數不同。例:斷續器Publish(topic string, qos byte, retained bool, payload interface{}) Token萬普Publish(topic string, options wamp.Dict, args wamp.List, kwargs wamp.Dict) error我最初的想法是定義一個通用接口,在其中篩選出我真正需要的所有參數:Publish(topic string, payload map[string]interface{}, options map[string]interface{}) map[string]interface{}但是,由于對于兩個庫,簽名完全不同,因此我被迫使用該類型。這反過來又會迫使我做很多類型斷言魔術和額外的工作來使這項工作正常工作。interface{}我是否完全錯過了一些明顯的東西?這個問題的更好解決方案是什么?或者我應該以完全不同的方式解決這個問題。
具有通用功能但功能參數不同的 API 的通用接口
慕碼人2483693
2022-08-01 17:29:33