неплохо раскрывают
Про Data Semantics очень полезная статья у Билла Кеннеди, хотя есть ощущение, что это исключительно его терминология, нигде больше не читал про нее особо)
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, и неожиданные изменения возможны. Может, я просто не так понимаю параграф
Всё так. И я задавал этот вопрос Биллу после какой-то конфы, и он признавал проблему 🙂
Обсуждают сегодня