tgoop.com/go_interview_lib/362
Last Update:
💬 Почему использование chan struct{}
вместо chan bool
предпочтительнее для сигнализации между горутинами?
🔹 chan struct{}
сразу показывает, что канал используется исключительно для сигнализации, тогда как chan bool
может вызвать путаницу, так как значения true
и false
могут иметь разный смысл.
🔹 Тип struct{}
не занимает памяти — это просто сигнал. Это приводит к небольшой, но все равно оптимизации памяти.
🔹 chan struct{}
исключает возможность неправильного использования канала для передачи данных, что может произойти при использовании chan bool
.
🔹 Для одноразового сигнала можно просто закрыть канал, что является понятным и эффективным способом передать сигнал нескольким получателям без отправки данных.
📌 Пример:
type JobDispatcher struct {
start chan struct{}
}
func NewJobDispatcher() *JobDispatcher {
return &JobDispatcher{
start: make(chan struct{}),
}
}
func (j *JobDispatcher) Start() {
close(j.start)
}
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/362