Size: a a a

Golang Developers — русскоговорящее сообщество

2020 July 24

P

Pr in Golang Developers — русскоговорящее сообщество
Pr
А если я передам в хендлер тип по-значению?
Да, будет копирование на каждый реквест. Но не будет забиваться куча, проще gc . Для небольшой нагрузки это же проще чем заморачиваться синхронизацией?
источник

P

Pr in Golang Developers — русскоговорящее сообщество
x-foby
В абсолютном большинстве случаев состояние хранить не нужно.
Если вы храните состояние, тогда используйте по каждый запрос отдельный экземпляр объекта.
Всё очень просто.
Дада, вот это я и имею ввиду
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Pr
Да, будет копирование на каждый реквест. Но не будет забиваться куча, проще gc . Для небольшой нагрузки это же проще чем заморачиваться синхронизацией?
С кучей не всё так просто, как вы думаете.
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Передача по значению или через указатель не гарантирует в общем случае ничего.
Это вам надо к эскейп анализатору обращаться, вот он уже расскажет, где и как выделится память.
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Но опять же в 99% случаев это не нужно
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Т. е. если я передам в хендлер велью, буду процессить, не факт, что в результате следующая горутина получит собственное значение и не перепишет стейт?
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Pr
Есть ли что почитать или посмотреть хороший код апишек каких нибудь?
Так сказать, учиться на примерах
Все таки вопрос актуален
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
я думаю лучше почитать что такое мультитрединг в принципе
источник

C

Calculon🤖 in Golang Developers — русскоговорящее сообщество
вопросы отпадут сами собой
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Я почитаю, спасибо.
Мне понятна концепция в целом каналов и мьютексов.
Но так мозг мой устроен.
Я не могу понять как это верно, применять все,  хотелось бы глянуть на пример продакшн реди апишки какой нибудь. Это закроет много вопросов
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Pr
Т. е. если я передам в хендлер велью, буду процессить, не факт, что в результате следующая горутина получит собственное значение и не перепишет стейт?
В данном случае не важно, по значению или через указатель вы передаёте.
Параллельно записывая и высчитывая данные из общего ресурса вы в любом случае будете получать гонку данных.
источник

P

Pr in Golang Developers — русскоговорящее сообщество
А что насчёт того, что при передаче в ф-цию по значению происходит копирование?
Разве это не значит что при каждом обращении к ф-ции будет передаваться копия?
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Как это в таком случае понимать?
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Копия копии рознь.
Если вы передаёте копию объекта, но у него есть поле с указателем, то (внезапно) указатель будет указывать туда же, куда и указатель оригинала объекта.
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Так, получается тут у меня пробел в понимнии.
Т. Е.
при передаче по значению тип, который будет встроен по значению, не измениться для скоупа вызывающей ф-ции, но встроенный по указателю - изменится?
😐
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Ну да, получается ведь что указатель это типа значение
источник

P

Pr in Golang Developers — русскоговорящее сообщество
И адрес хоть копируй, хоть не копируй, он будет тот же, что в обьемлющем скоупе
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Это многое меняет
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Для моего понимания)
источник

P

Pr in Golang Developers — русскоговорящее сообщество
Спасибо всем за ответы большое
источник