26:26 Идеоматично писать не type Animal interface{ Speak() }, а type Speaker interface{ Speak() } - если в интерфейсе один метод, то и называется он исходя из сигнатуры этого метода
Допустим, у нас автопеременная в стеке функции, мы возвращаемся из функции и хотим отдать содержимое этой переменной в вызывающую нас функцию. Если мы отдадим адрес в стеке, который при выходе из функции будет разрушен, мы в себя рано или поздно выстрелим (С/С++). Мы можем безопасно передавать адрес стековой переменной только дальше в вызываемые нами функции, так как стек все еще жив. Мы можем скопировать содержимое этой переменной в вызывающий нас стек - это так и в С и в С++ и в Го. Другое дело если отдаем стековую переменную обратно в вызывающую функцию в случае C/C++ - там есть дополнительные оптимизации в виде RVO/NRVO, habr.com/ru/companies/vk/articles/666330/, где мы не делаем никаких экстра копирований / созданий лишних переменных. Что касается Го, компилятор опасные вещи ввиде возврата адреса локальной / автоматической переменной превращает в безопасные - эта стековая переменная на самом деле перестает быть стековой (сразу создается в куче), если идет возврат ее адреса (адрес в куче). В любом случае мы не отдаем в вызывающую функцию адрес из стека.
Какой интересный дядя, спасибо много моментов открыл, очень структурно👍
Рады, что понравился доклад! Рекомендуем еще прочесть статью Владислава на нашем портале: engineer.yadro.com/article/tips-for-go/
28:23 Здесь бы примерчик для наглядности... Пару таких структур со значениями. А до этого вообще шикарно, спасибо докладчику, очень живое выступление!
26:26 Идеоматично писать не type Animal interface{ Speak() }, а type Speaker interface{ Speak() } - если в интерфейсе один метод, то и называется он исходя из сигнатуры этого метода
20:40 Это вырез звука или лучший пролаг записи ever?
Спасибо, некоторые вещи стали понятнее.
20:55 почему стековое "копирование", там же ничего не копируется, просто адрес возвращает (в C++ так)
Допустим, у нас автопеременная в стеке функции, мы возвращаемся из функции и хотим отдать содержимое этой переменной в вызывающую нас функцию. Если мы отдадим адрес в стеке, который при выходе из функции будет разрушен, мы в себя рано или поздно выстрелим (С/С++). Мы можем безопасно передавать адрес стековой переменной только дальше в вызываемые нами функции, так как стек все еще жив. Мы можем скопировать содержимое этой переменной в вызывающий нас стек - это так и в С и в С++ и в Го. Другое дело если отдаем стековую переменную обратно в вызывающую функцию в случае C/C++ - там есть дополнительные оптимизации в виде RVO/NRVO, habr.com/ru/companies/vk/articles/666330/, где мы не делаем никаких экстра копирований / созданий лишних переменных. Что касается Го, компилятор опасные вещи ввиде возврата адреса локальной / автоматической переменной превращает в безопасные - эта стековая переменная на самом деле перестает быть стековой (сразу создается в куче), если идет возврат ее адреса (адрес в куче). В любом случае мы не отдаем в вызывающую функцию адрес из стека.
Проще уж на Rust написать тогда
Время от времени звук пропадает на пол секунды. Не ну е-мое, 2023 год на дворе, а звук пропадает🤯
Сначала делают автомтаическую работу с памятью, потом ищут как ее обойти