Иногда указатель может быть nil. При этом функция может обрабатывать nil корректно, но из-за приведения к интерфейсу прилетает не нулевой указатель, а ненулевой указатель на интерфейс с нулевым value внутри. Вот тут все падает.
Как это идиоматически правильно разруливать?
* снаружи везде проверять nil/не nil и если nil, то передавать его явно, что бы интерфейсы не приводились, а внутри просто проверять val == nil
* Внутри проверять val == nil || reflect.Value(val).isNil()
* как-то еще?
Звучит все как-то костыльно
А откуда приходит указатель на объект? Где он хранится?
Вы сразу начали с того, что вам нужно в некую функцию передавать два интерфейса и т.д. Возможно, вы изначально сильно заморочились (как в учебнике). Опишите вашу задачу без абстракций. Что вам приходит по http, и в каком виде это нужно положить в БД?
Обсуждают сегодня