Рис. 2.7. Есть зависимость пакета store от пакета client
В пакете store мы определяем структуру InMemoryStore, реализующую интерфейс Store. Мы также создаем функцию NewInMemoryStore для возврата интерфейса Store. При таком дизайне есть зависимость пакета реализации от пакета потребителя, и это может показаться странным.
Например, пакет client больше не может вызывать функцию NewInMemoryStore, в противном случае возникла бы циклическая зависимость. Возможным решением может быть вызов этой функции из другого пакета и внедрение реализации Store в client. Однако обязанность сделать это означает, что такой дизайн должен быть оспорен.
100 ошибок Go и как их избежать
·
Тейва Харшани