Например, у меня есть
package module
, который взаимодействует с разными API. Соответственно иерархия у меня примерно такая:
- module // директория модуля
-- api1 // директория с api1
--- api.go // взаимодействие с api1
-- api2 // директория с api2
--- api.go // взаимодействие с api2
-- api.go // интерфейс для api
-- response.go // структура ответа, который должен вернуть модуль
-- request.go // структура запроса, которой принимает модуль
-- handler.go // принимает запрос, отдает его API, собирает ответ и возвращает общий
Соответственно, вопрос, как мне в api1/api.go (или api2/api.go) использовать хотя бы интерфейс api.go? Например, у меня есть метод, который должен вернуть интерфейс, описанный в api.go, но этот метод находится в api2/api.go, но я не могу его вернуть, потому что если сделаю
import "../"
, то, конечно же, появится цикл. Подскажите, что в этом случае делать? Возможно, я не очень правильно строю структуру, но логика же проста - есть интерфейс и есть реализации, которые его реализуют, почему в реализациях нельзя на него ссылаться? Также не понятно, как работать с общим объектом
Response
, который также активно используется в реализациях api.