@Artem0071
Безработный mr. Junior

Почему так работают интерфесы в Го?

Пример: https://go.dev/play/p/xp9sQPwAk7r

У нас есть интерфейс ICommon, который возвращает метод A(), который возвращает структуру A, которая имплементирует интерфейс IA с методом doA()

Так вот, почему при реализации Common, метод A() не возвращает IA(), хотя вроде как он соответствует сигнатуре?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
Потому что в Го сигнатура метода в интерфейсе должна совпадать полностью. Таким образом на рантайме они быстро матчатся.

Иначе пришлось бы заглядывать внутрь типа A, а так как это все происходит на рантайме, было бы неоптимально. Возможно для вашей цели больше подойдут дженерики, в их случае происходит мономорфизация и компилятор генерирует отдельный код для каждого варианта дженерика, что работает быстро.

Кстати, не рекомендую называть интерфейсы ISomething, это не принято в Го.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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