170 похожих чатов

Пара общих вопросов: Каковы недостатки реализации наследования в Go через embedding? Чем

отличаются в поведении небуфферизированный канал и канал с буффером размера 1?

25 ответов

25 просмотров

Недостаток в том, что встраивание — это не наследование. Он не работает как наследование

небуферизированный создается с размером 0. ну а разница как между буф и небуф каналами)

И принцип Лисков мягко говоря не про это

🏳️ Phil Kulin
И принцип Лисков мягко говоря не про это

superclass object should be replaceable with a subclass object Это принцип Лисков, и именно про это я и писал. Встраивание не позволяет нам нигде пропихнуть результат через аргументы, где принимался как аргумент "родитель"

Elmanov Anton
superclass object should be replaceable with a sub...

если это встраивание интерфейсов, то кое где позволяет

Elmanov Anton
superclass object should be replaceable with a sub...

Это не принцип Лисков. На английском он звучит как "Let {\displaystyle \phi (x)}\phi (x) be a property provable about objects {\displaystyle x}x of type T. Then {\displaystyle \phi (y)}{\displaystyle \phi (y)} should be true for objects {\displaystyle y}y of type S where S is a subtype of T"

ООП в целом мало имеет отношения к прицепу барбары лисков, именно поэтому у всех такие трудности с пониманием что это такое

Так будет в читаемом виде точка зрения донесена?

Leonid
ООП в целом мало имеет отношения к прицепу барбары...

ну эо такое правило: при расширении базового типа наследованием следует сохранять совместимость с базовым типом. сохраняйте обратную совместимость, короче

Leonid
ООП в целом мало имеет отношения к прицепу барбары...

Его почему-то пытаются с SOLID занести в C++/Java и коеят похожие слова. Вот прямо сейчас легкое гугление показало

Elmanov Anton
Так будет в читаемом виде точка зрения донесена?

Это не точка зрения. Это была прямая цитата.

🏳️ Phil Kulin
Это не точка зрения. Это была прямая цитата.

а разве liskov substitution это не про контракты?

Artur Karapetov
нет 😄

Ну тогда возвращаюсь к своей вопросу.

вот LSP type Parent struct {} func (p *Parent) Go() {} type Child struct { Parent } func test(obj) { obj.Go() } func main() { test(parent{}) test(child{}) }

https://dave.cheney.net/2016/08/20/solid-go-design У Dave Cheney тут в том числе про Liskov Substitution Principle

Не надо постить сюда скриншоты кода и аудиосообщения. Долго – это хорошо, потому что пока делаешь небольшой пример, чтобы вынести в плейгроунд – проблема часто находится

Alexey Palazhchenko
Не надо постить сюда скриншоты кода и аудиосообщен...

да, а как быть с вопросами, которые не касаются напрямую кода, например утренняя проблема с докерфайлом, проблемы с архитектурой. Ну и было же включено, все было ок, вы сами написали, что причина в дикпиках) за аудиосообщения - бан, тут согласен полностью Плюс, как вариант, можно ограничить загрузку не картинками (превью) а файлами - аналогично ссылками на файлопомойки будет

Timur Sharapov
https://dave.cheney.net/2016/08/20/solid-go-design...

Because io.Reader‘s deal with anything that can be expressed as a stream of bytes, we can construct readers over just about anything; a constant string, a byte array, standard in, a network stream, a gzip’d tar file, the standard out of a command being executed remotely via ssh. And all of these implementations are substitutable for one another because they fulfill the same simple contract.

Petr Filippov
а разве liskov substitution это не про контракты?

Есть тип А, вы создаете подтип Б от А, любая функция которая работает с А может использовать Б тк это подтип, все. Весь принцип. В контексте ооп это не очень понятно, потому что в ооп когда вы наследуете вы создаете супертип с большим функционалом, те все наоборот.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта