为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
潇潇雨雨 2023-06-12 19:10:52
我有 2 种基于 3rdparties 代码的结构,我无法更改type AddEvent struct {}type DeleteEvent struct {}我想创建一个字符串映射作为键和对象作为值所以每次我得到新事件我都会将它添加到地图 IE Map 应该是这样的:EventMap:    event1,AddEvent{}    event2,AddEvent{}    event2,DeleteEvent{}AddEvent 和 DeleteEvent 未定义为接口的问题。我有没有办法使用任何结构作为值在 go 中创建一个通用映射,如果是,我该如何读取它我需要使用反射检查类型吗I.Eevent:=EventMap[event1]if reflect.TypeOf(event)==AddEvent{}else if reflect.TypeOf(event)==DeleteEvent{}
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

缺少type switch。完整版也许你需要的是:


m := make(map[string]interface{})

addEvent := new(AddEvent)

m["event1"] = addEvent

switch m["event1"].(type) {

case *AddEvent:

    // do something

case *DeleteEvent:

    // do other things

}


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信