golang中通过interface{}的通用结构图
短信预约 -IT技能 免费直播动态提醒
一分耕耘,一分收获!既然打开了这篇文章《golang中通过interface{}的通用结构图》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!
问题内容我有两种基于第三方代码的结构,我无法更改
type addevent struct {
}
type deleteevent struct {
}
我想创建一个以字符串为键、以对象为值的映射 所以每次我收到新事件时我都会将其添加到地图中 地图应如下所示:
eventmap:
event1,addevent{}
event2,addevent{}
event2,deleteevent{}
addevent和deleteevent没有定义为接口的问题。
有没有办法使用任何结构作为值在 go 中创建通用映射,如果是的话,我如何读取它,我是否需要使用 reflect 检查类型
I.E
event:=EventMap[event1]
if reflect.TypeOf(event)==AddEvent{
}else if reflect.TypeOf(event)==DeleteEvent{
}
解决方案
评论说的看起来不错,但是缺少类型开关
。也许您需要的完整版本是:
m := make(map[string]interface{})
addEvent := new(AddEvent)
m["event1"] = addEvent
switch m["event1"].(type) {
case *AddEvent:
// do something
case *DeleteEvent:
// do other things
}
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持编程网!更多关于Golang的相关知识,也可关注编程网公众号。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341