Интерфейсы: определение, неявная реализация и 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Ввод
cash 120 coupon 15
Ожидаемый выводcash=120 coupon=15 discount=15
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы.
Отправьте решение, чтобы увидеть результаты тестов.
