Контест Middle Ошибки, defer, panic и recover обновлено

Банковские счета и sentinel-ошибки на Go

Условие

Обработайте операции со счетами. Изначально счетов нет.

  • open <id>: открыть счёт с балансом 0;
  • deposit <id> <сумма>, withdraw <id> <сумма>;
  • transfer <откуда> <куда> <сумма>;
  • balance <id>: вывести баланс.

Успешные open, deposit, withdraw, transfer выводят ok. Ошибки выводятся строкой error: <текст>, проверки идут строго в этом порядке:

  1. сумма не больше 0: invalid amount (для deposit, withdraw, transfer);
  2. счёт не найден: account not found (для transfer сначала проверяется «откуда», затем «куда»);
  3. перевод самому себе: same account;
  4. не хватает денег: insufficient funds;
  5. открытие существующего счёта: account exists.

Ввод: q (1 ≤ q ≤ 1000), затем q операций, суммы целые.

Пример

8
open a
open b
deposit a 100
withdraw a 30
transfer a b 50
balance a
balance b
withdraw b 60
ok
ok
ok
ok
ok
20
50
error: insufficient funds

Как подойти

Sentinel-ошибки, методы возвращают error, проверки до изменения состояния.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме