golang中通过接口{}的结构的通用映射

我有 2 种基于 3rdparties 代码的结构,我无法更改


type AddEvent struct {

}


type DeleteEvent struct {

}

我想创建一个字符串映射作为键和对象作为值所以每次我得到新事件我都会将它添加到地图 IE Map 应该是这样的:


EventMap:

    event1,AddEvent{}

    event2,AddEvent{}

    event2,DeleteEvent{}

AddEvent 和 DeleteEvent 未定义为接口的问题。

我有没有办法使用任何结构作为值在 go 中创建一个通用映射,如果是,我该如何读取它我需要使用反射检查类型吗


I.E

event:=EventMap[event1]

if reflect.TypeOf(event)==AddEvent{

}else if reflect.TypeOf(event)==DeleteEvent{

}


潇潇雨雨
浏览 116回答 1
1回答

12345678_0001

缺少type switch。完整版也许你需要的是:m := make(map[string]interface{})addEvent := new(AddEvent)m["event1"] = addEventswitch m["event1"].(type) {case *AddEvent:    // do somethingcase *DeleteEvent:    // do other things}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go