Re[2]: ООП не получается
От: Doom100500 Израиль  
Дата: 27.06.23 10:42
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Наследования в Го не принципиально.

LVV>Есть шаблоны
LVV>Есть рефлексия.
LVV>Наверное, с их помощью можно.
LVV>Как — не подскажу, я в Го еще даже не джун...

С шаблонами дженериками не выйдет. Во-первых нет дженерик методов (может быть либо type, либо func(), но не func()()). Во вторых:
func (f *foo) Bar() {
    f.Foo() // Ожидается, что здесь будет вызван метод "наследника"
                // Но похоже, что инфорация о типе здесь безвозвратно утеряна.
    log.Println("foo:Bar")
}


f *foo не помнит, что он был *bar, поэтому и возникла проблема. Из-за той-же причины и рефлекцией особо не нарефлексируешь. Не говоря уже, что решать такую задачу рефлексией — это вообще фу. Лучше уж копипастить и ждать go2, где предлагаются контракты с реализацией по умолчанию. Но по опыту с дженериками ждать этих введений смысла особо нет, т.к. похоже, что всё равно сделают через анус, и особо с этим ничего и не сделаешь.
Спасибо за внимание
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.