Структуры, указатели, методы и интерфейсы

Интерфейсы: определение, неявная реализация и type assertion

Содержание курса

Квитанции способов оплаты

Любой кассир знает: в конце смены важно не просто зафиксировать, сколько денег поступило, но и понять, каким именно способом был проведён каждый платёж. Наличные и купоны — совершенно разные инструменты расчёта, хотя и те и другие гасят долг покупателя. Когда их нужно обработать единообразно, возникает желание собрать все квитанции в одну стопку и пройтись по ней, не думая о том, что именно лежит под каждым листком.

В языке Go такую «стопку» удобно представить срезом, элементы которого объединены общим интерфейсом. Каждый тип платежа самостоятельно описывает себя через метод Summary, и срез принимает любой из них без явного указания конкретного типа. Это позволяет пройти по всем квитанциям в одном цикле и напечатать краткое описание каждой — вне зависимости от того, за чем скрывается значение.

Что нужно сделать

Допишите краткое описание для Cash и Coupon, создание квитанции по виду платежа и безопасную проверку последнего элемента. Программа должна хранить обе квитанции как Receipt, вывести описание каждой, а затем показать скидку последнего платежа, только если это купон. Вход содержит только виды cash и coupon.

Формат ввода

Две строки: вид платежа и целое число. Для cash это сумма, для coupon — скидка.

Формат вывода

Сначала по одной строке на квитанцию: cash=N или coupon=N. Последняя строка: discount=N для купона либо discount=none для другого вида платежа.

Пример

Ввод:
cash 120
coupon 15

Вывод:
cash=120
coupon=15
discount=15
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    cash 120
    coupon 15
    
    Ожидаемый вывод
    cash=120
    coupon=15
    discount=15
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы.

Отправьте решение, чтобы увидеть результаты тестов.