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

А статьи от ArdanLabs тут ещё не советовали? Внутрянку некоторую

неплохо раскрывают

4 ответов

21 просмотр

Про Data Semantics очень полезная статья у Билла Кеннеди, хотя есть ощущение, что это исключительно его терминология, нигде больше не читал про нее особо)

Timur Sharapov
Про Data Semantics очень полезная статья у Билла К...

Value semantics. Передача по значению. Нет, это общий термин, просто он один его так со всех сторон рассматривает

Alexey Palazhchenko
Value semantics. Передача по значению. Нет, это об...

Имел в виду "On Data And Semantics". Без союза прозвучало странно, да :) Я, кстати, хотел бы воспользоваться моментом и кое-что спросить. If all the methods of a named type T have a receiver type of T itself (not *T ), it is safe to copy instances of that type; calling any of its methods necessarily makes a copy. For example, time.Duration values are liberally copied, including as arguments to functions. But if any method has a pointer receiver, you should avoid copying instances of T because doing so may violate internal invariants. For example, copying an instance of bytes.Buffer would cause the original and the copy to alias ( §2.3.2 ) the same underlying array of bytes. Subsequent method calls would have unpredictable effects. Это отрывок из The Go Programming Language. Как бы все понятно: если есть методы с pointer receiver, то их вызов может внутренние инварианты испортить. Но условие "если все методы с value receiver, то безопасно копировать T" вызывает вопросы. Даже если все ресиверы имеют тип T, если в структуре, например, slice или map, мы в любом случае имеем указатель на backing array, и неожиданные изменения возможны. Может, я просто не так понимаю параграф

Timur Sharapov
Имел в виду "On Data And Semantics". Без союза про...

Всё так. И я задавал этот вопрос Биллу после какой-то конфы, и он признавал проблему 🙂

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
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
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
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
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта