new(payloadType)
Так вам все равно придется выбирать между разными пэйлодами
Но этот выбор останется только в момент инициализации, а вся логика будет универсальная
Я слушаю сервер. Он присылает мне натификации трех типов: 1 - inbound, 2 - outbound, 3 - agent. Я их анализирую, достаю нужные данные и отправляю их на другой сервер. Этот другой сервер ожидает для каждого из трех типов разный json.
А как быть с другим общим функционалом, дублировать? У них же отличается только генерируемый json, а то как и куда они отправляют у них одинаково
Хотя стойте, я же выше уже сам себе ответил. В итоге просто при инициализации пробегусь if'ом, и вызову нужные не общий generatePayload(), а сразу конкретный generatePayloadType1() и нет проблем. только будет проблема, если мне потом понадобится такая логика в нескольких местах. Или если у меня будут добавляться еще другие типы.
Они одинаково отправляются на сервер, одинаково обрабатываются возможные ошибки, одинаково логируется весь процесс работы: чтение, преобразования, модификации и отправки.
Нет, в одном { "name": "qwe" "phone": 123, }А в другом { "name": "qwe" "address": "asd", }
я не уловил, в чем проблема сделать разные структуры и в функциях использовать switch type?
Уже ни в чем. Изначально хотел избавиться от switch, но т.к. от них не избавиться, то проблема отпала и пришло смирение
Все же спрошу. Допустим мы создали три разных структуры, которые должны отличаться только возвращаемым json'ом. И теперь мне надо сделать так, что бы в возвращаемый json у меня добавлялось еще одно поле, одинаковое для всех. Как мне это сделать, если у нас три структуры с тремя разными методами? В каждый метод добавить одинаковую функцию?
type BaseMessage struct { Name string `json:"string"` // и т.п. } type FooMessage struct { BaseMessage Email string `json:"email"` }
Вот оно что, каждое поле json'а это отдельное поле в структуре. А я сейчас отдаю весь json просто как строку. Спасибо, это натолкнуло на мысли
Всё это гамно, вам нужен один хендлер и под него структура, всё что с одного хендлера летит, разное, это для скриптовых яп.
Обсуждают сегодня