

Size: a a a
sync.Once
в #goMutex
и забыть о проблемах, некоторые чуть изощряются и делают на каналах, на атомиках тоже, но ведь уже есть простое решение - sync.Once
!sync.Once
- ты знаешь, что он выполнится 1 разselect {}
который просто заблочит горутину (часто испоользую в main), поэтому другие решения (через бесконечный цикл, чтение из неиспользуемого канала) по сути не нужны.sync.Map
с его interface{}
в параметрах. Вот что посоветую я.type Foo struct {Внезапно вы уйдете от явных переходов от interface{} к вашему типу в методе
idToUser sync.Map
idToUser idToUserMap
}
type idToUserMap struct { data sync.Map }
// геттер и сеттер под конкретные типы
Load
, что приятно, лишний раз не ошибетесь с типом (но тесты тоже иметь, окда?). Еще тип подскажет, что же вы там мапите, это полезно.sync.Map
пихать везде не надо, я все же за явный мютекс + мапа, но как помочь другим не тупить над вашим кодом вариант - норм.WITH (
f(a, b) = WITH (
f1(x) = b-x,
f2(x) = x+x
) f1(a)*f2(b)
) f(foo, with(x=bar) x)