Общая карта структуры в Голанге - PullRequest
1 голос
/ 14 марта 2019

У меня есть 2 типа структур, основанных на коде 3-х сторон, которые я не могу изменить

type AddEvent struct {
}

type DeleteEvent struct {
}

Я хотел бы создать карту строки в качестве ключа и объекта в качестве значения поэтому каждый раз, когда я получаю новое событие, я добавляю его на карту I.E Карта должна выглядеть так:

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{
}

1 Ответ

3 голосов
/ 14 марта 2019

, что говорит комментарий, выглядит хорошо, но отсутствует 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...