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

Как перевести один интерфейс в другой, переняв из него часть

функций и свойств?

32 ответов

19 просмотров

очень странный вопрос скопипастить описания методов?

Artem- Автор вопроса
Artem
Чтобы они работали, ну и свойства тоже

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

Может вы про embedding?

Artem- Автор вопроса
Vladislav Semyachkin
В смысле «работали»?😁

Суть в том, чтобы отделить бизнес-логику. То есть методы одинаковые, а по факту все зависит от выбранного драйвера (postgresql, mongodb)

https://play.golang.org/p/jtjlR-yWBBx Вам что-то такое нужно?🌚

Artem
Суть в том, чтобы отделить бизнес-логику. То есть ...

Этим и занимается интерфейс. Вы определяете интерфейс, а также две реализации для него (с postgresql и mongodb)

Artem- Автор вопроса
Artem- Автор вопроса
Евгений Омельченко
В смысле "вытащить"?

Получить функции, свойства

Vladislav Semyachkin
reflect?🌚

Ну хоть не unsafe и на том спасибо

Roman Covanyan
что не так с reflect и unsafe?

Packages that import unsafe may be non-portable and are not protected by the Go 1 compatibility guidelines.

ddpvfpd
Packages that import unsafe may be non-portable an...

Можно проще сказать: unsafe позволяет стрелять по ногам, для защиты от чего, в частности, язык и создавался)

Владимир Столяров
Можно проще сказать: unsafe позволяет стрелять по ...

потому у нас есть прелести слайсов, interface{} и прочие прелести )

Roman Timofeev
interface{} и есть такое :)

С чего бы, eface знает тип, который в нем лежит

Владимир Столяров
С чего бы, eface знает тип, который в нем лежит

type Foo int type Void interface{} var f Foo v := Void(&f) а теперь попробуй через type assertion получить int ;)

ddpvfpd
Packages that import unsafe may be non-portable an...

а в чем конкретно проблема? при переходе на Go2 сломается не только это, поэтому, аргумент слабый

^

Zver
Не будет го2.

Once all the backwards-compatible work is done, say in Go 1.20, then we can make the backwards-incompatible changes in Go 2.0. If there turn out to be no backwards-incompatible changes, maybe we just declare that Go 1.20 is Go 2.0. Either way, at that point we will transition from working on the Go 1.X release sequence to working on the Go 2.X sequence, perhaps with an extended support window for the final Go 1.X release. https://blog.golang.org/toward-go2

Maksim Litvinov
^

Ну там один нормальный способ, новая структура с эмбеддингом интерфейса. Рефлект тут странно использовать.

Zver
Это статья 17 года.

А есть новее, где сказано, что го 2 не будет?

Vadim Alekseev
А есть новее, где сказано, что го 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...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта