интерфейсы, описывающие некий сервисный объект.
Пакет А.
type SomeInterfaceA interface {
SomeMethod(i int, o string) error
}
type StructA struct {
service SomeInterfaceA
}
Пакет B.
type SomeInterfaceB interface {
SomeMethod(i int, o string) error
}
type StructB struct {
service SomeInterfaceA
}
Интерфейсы содержат обсолютно одинаковые методы, копи-паст.
В пакете А я пытаюсь инициализировать структуру из пакета В.
someB := StructB {
service: someA.service
}
Эти 2 интерфейса соответствуют друг другу на 100%.
Но я не могу передать переменную из пакета А как зависимость в структуру пакета Б.
Если тип внутри интерфейса SomeInterfaceA содержит метод SomeMethod(i int, o string) error, то логично, что он может быть передан в параметр типа SomeInterfaceB?
Ведь они требуют наличие идентичных методов?
Но Goland светит ошибку.
А какую ошибку?
у тебя в структБ интерфейсБ да?
Не могу скриншот отправить. Якобы он не имплементирует, потому что у него нет метода такого-то. Но он есть в обоих интерфейсах. Потому что интерфейс из пакета В был просто скопирован из пакета A.
Да, интерфейсы у каждого пакета свои, но методы в них идентичные.
ну интерфейсБ содержит все те же методы что и интерфейсА, да? вообще это странно, что ты пытаешься из пакета А в пакет Б обратиться напрямую... обычно это где-то снаружи должно разруливаться (в мейне там)
Обсуждают сегодня