l3ftoverz
@l3ftoverz
Люблю Финский металкор

Как быть с одинаковыми именами пакетов? Можно как-то получить нормальные неймспейсы?

Например такая структура:
tjwfhjoyoefskqsydk9qg6g4rza.png

Меня печалит то, что в Golang пакет никак не зависит от того, что он вложен в другой пакет, т.е. я не могу обратиться к нужному пакету от родителя, например так: types.twoChannel.ResponseThreads

Моя проблема в том, что у меня получаются одинаковые имена пакетов и циклическая зависимость из-за этого.
У меня тут по сути простейший полиморфизм.

У меня есть vendors, которые реализуют мой интерфейс vendor.Interface. А так же есть папка типов, в которой есть вложенная папка равная имени вендора, так как у каждого вендора приходят свои данные из сети, у каждого свои структуры для парсинга JSON.

Как в общем быть? У меня есть варианты, но меня они не устраивают:

1. Дать какой-то суффикс\префикс пакетам в types, но это будет странная семантика.
2. Вынести локальные для вендора структуры в пакет реализации вендора, но я хотел бы, чтобы типы были в одном месте.

Может есть ещё варианты? Подскажите как правильнее поступить.
  • Вопрос задан
  • 325 просмотров
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov
Senior software developer
Я бы делал немного иначе, например так:
vendors/ - тут я бы описал интерфейс и общие типы, если они есть
vendors/twoChannels/ - тут я бы делал реализацию и описывал бы типы конкретного вендора, так не будет ни циклических зависимостей, и весь код который относится к конкретному вендору будет в одной папке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ghostiam
На Go писатель, серверов пинатель.
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы