Виктор Кожухарь , сделать-то можно разными способами, но мне хотелось бы сделать не просто абы как, а самым элегантным способом. К сожалению, судя по ответам так сделать не получится. Сделаю значит как-то иначе.
Александр Павлюк , я немного поменял ваш код https://go.dev/play/p/wjJj7qqUEsl
, добавив функцию GetSubDescr, которую как раз и хочу, чтоб вызывалась из типа WorkingUser, но она не вызовется, т.к. BaseUser ничего не знает о parant-е. Как мне это обойти?
Александр Павлюк так я же код целый рабочий написал с предполагаемым разультатом и чего хотелось бы избежать... Мне как раз это и надо, есть фабрика, есть типы пользователей, есть базовые методы, которые иногда для определенных типов пользователей надо переопределять... Код написан больше в стиле java, но в go нет переопределения, вот я и хочу найти способ, не переписывая базовый код иметь возможность как-то влиять на него с более верхнего уровня.
Если у вас разные пользователи и надо делать какую-то общую логику с ними, то пусть функции пакета, где будут действия с пользователем, принимают интерфейс, а не конкретный тип.
Это получается то метод Do придется писать в каждом типе пользователя которые будут на ряду с Working
Это получается, что мы код метода Do просто перенесли в другое место и для каждого типа пользователя мне придется это вызывать если в них так же понадобиться использовать какой-то из переопределенных методов...
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.