Реализуйте Wallet с мьютексом в структуре: Deposit и Withdraw (списывает не больше баланса и возвращает списанную сумму).
- Задача
- Решение
- Обсуждение
Wallet: мьютекс рядом с данными
GolangРешение
func (w *Wallet) Deposit(amount int) {
w.mu.Lock()
defer w.mu.Unlock()
w.balance += amount
}
func (w *Wallet) Withdraw(amount int) int {
w.mu.Lock()
defer w.mu.Unlock()
if amount > w.balance {
amount = w.balance
}
w.balance -= amount
return amount
}