Перейти интерфейс к хранилищу данных, две реализации - PullRequest
0 голосов
/ 03 октября 2018

Пожалуйста, смотрите это репо .Я пытаюсь создать интерфейс для хранилища данных.Причина: я не хочу зависеть от реального postgres db при разработке, но я хочу использовать реализацию в памяти во время разработки.

Это работает, пока я создаю экземпляры в моемглавный().Например: db := store.NewMemoryDB() или db := store.NewDB().

Но теперь я хочу создать экземпляр на основе логического значения.Поэтому я создал функцию GetDatastore (bool) в пакете магазина.Это работает для реализации postgres, но не для оперативной памяти.Я получаю следующую ошибку: cannot use NewMemoryDB() (type *MockDB) as type *DB in assignment.Теперь я действительно не знаю, как это решить.Может кто-нибудь дать мне подсказку?Как мне сделать в памяти один * DB-совместимый?

1 Ответ

0 голосов
/ 03 октября 2018

Тип возврата GetDatastore - это конкретный тип *DB, а *MockDB - это не *DB, поэтому вы получаете эту ошибку.Вместо этого вы хотите вернуть интерфейс типа Datastore, который реализован в *DB и *MockDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...