我尝试在 go 中编写简单的消息协议,但遇到了问题。我有很多消息类型,我想要一个这样的字典来处理消息:var dict map[reflect.Type]int = map[reflect.Type]int{ reflect.TypeOf(DataMessage{}): 1000, reflect.TypeOf(TextMessage{}): 1001, //....}func GetMessageTypeId(value interface{}) int { if id, ok := dict[reflect.TypeOf(value)]; ok { return id } else { return -1 }}func GetValueByTypeId(typeId int) interface{} { for typeDec, id := range dict { if id == typeId { return reflect.Zero(typeDec).Interface() } } fmt.Println("Unknown message type", typeId) return nil}它工作正常,但是当我使用 GetValueByTypeId 实例化消息并尝试将 json 解组到其中时 - 我收到的是 map[string]interface 而不是我的消息。我做了一个简单的例子来重现这个问题:http://play.golang.org/p/QEyDN9vztr
2 回答
- 2 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消