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

Какие МОГУТ быть плюсы у возвращении из конструктора интерфейса?

28 ответов

26 просмотров

никаких, насколько мне известно

Rostislav-Teryaev Автор вопроса
Roman Sharkov
никаких, насколько мне известно

Единственное, что еще я не понял в этом вопросе. Почему функции хеширования в стд либе возвращают интерфейсы

Ну разве что закопать реализацию в своей либе...

Можно строить рефлектом!

Rostislav-Teryaev Автор вопроса
Евгений Омельченко
Можно строить рефлектом!

что-то не пойму, что имеешь в виду. Можешь пояснить?

Alexey ilving
Ну разве что закопать реализацию в своей либе...

этого делать в большинстве случаев не стоит

Rostislav-Teryaev Автор вопроса
Roman Sharkov
этого делать в большинстве случаев не стоит

Оно да, не по канонам. А с другой стороны - ну верну я поинтер на структуру, из которой в паблик только методы торчат. Чем это технически от интерфейса отличается?

Alexey ilving
Оно да, не по канонам. А с другой стороны - ну вер...

ничем именно поэтому надо вернуть структуру (теперь, по наущению @naphaso , я еще приватную структуру повадился возвращать. пока полет нормальный)

Daniel Podolsky
ничем именно поэтому надо вернуть структуру (тепе...

Кстати приватная структура, да. Хотя какие-то линтеры на такое ругались.

Alexey ilving
Оно да, не по канонам. А с другой стороны - ну вер...

тем что нажав Ctrl+LMB на метод, я попаду в объявление, а не в имплементацию

Shamil Gudaev
отсутствием полиморфизма?

Туплю под вечер. Можно пояснить?

Alexey ilving
Оно да, не по канонам. А с другой стороны - ну вер...

Тем, что у интерфейса может быть несколько имплементаций

Евгений Омельченко
А как ты фабрику-то делаешь?

а вот фабрика возвращает интерфейс, да, там иначе ника

Daniel Podolsky
ничем именно поэтому надо вернуть структуру (тепе...

возвращать приватную структуру?! зачем 🤯 это же значит что я не смогу объявить zero value: var x yourlib.Type x = yourlib.New() насколько я помню этого даже линтеры не любят

Alexey ilving
Туплю под вечер. Можно пояснить?

виртуальной таблицы нет, когда просто поинтер на структуру, в отличие от интерфейса

Alexey ilving
Ctrl+F12 (find implementation), ага

я понимаю что имплементацию можно найти. Но от конструктора я всегда ожидаю одно и то же. Один тип.

Roman Sharkov
возвращать приватную структуру?! зачем 🤯 это же з...

и очень хорошо, что не можешь! пойдешь New() вызовешь! (конечно же, я так делаю только для тех структур, что имеют New(), и не имеют публичных полей)

Daniel Podolsky
и очень хорошо, что не можешь! пойдешь New() вызов...

а если я хочу объявить в структуре поле с инстанцией объекта который возвращает yourlib.New?

Rostislav Teryaev
тип поля - интерфейс

речь про возвращение unexported типа

Roman Sharkov
а если я хочу объявить в структуре поле с инстанци...

тебе от такой структуры ничего, кроме поведения, не должно быть нужно, очевидно объявляй интерфейс, и все получится

Daniel Podolsky
тебе от такой структуры ничего, кроме поведения, н...

ну Стас сказал, что так надо делать, я решил поэкспериментировать. вроде, проблем не замечено пока

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта