Ранний return забыл разблокировку. Реализуйте IncIf(cond bool): поставьте defer c.mu.Unlock() сразу после Lock, чтобы мьютекс освобождался на любом пути выхода.
- Задача
- Решение
- Обсуждение
IncIf: Unlock через defer
GolangРешение
func (c *Counter) IncIf(cond bool) {
c.mu.Lock()
defer c.mu.Unlock()
if !cond {
return
}
c.n++
}