Урок 87 · Задача 3

Wallet: мьютекс рядом с данными

Реализуйте Wallet с мьютексом в структуре: Deposit и Withdraw (списывает не больше баланса и возвращает списанную сумму).

00:00:00
Показать решение
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
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки