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

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

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

Этикетки для посылок

На сортировочном складе каждое отправление перед отправкой получает бумажную этикетку: без неё посылку не примут на линию. У обычных коробок этикетка содержит только базовую информацию о грузе, тогда как хрупкие посылки требуют ещё и предупреждающей пометки — без неё хрупкое содержимое рискует не добраться до адресата целым. Оба типа отправлений умеют описывать себя через единое понятие «этикетка», хотя внутренне устроены по-разному.

Работник склада собирает очередную партию в общий список, не разбирая заранее, что перед ним — обычная коробка или стеклянный сервиз в пузырчатой плёнке. Его задача — пройти по всему списку в том порядке, в котором отправления были приняты, и для каждого распечатать нужный комплект строк. При этом важно не вскрывать упаковку, чтобы выяснить тип содержимого: достаточно спросить у самого отправления, умеет ли оно сообщать о своей хрупкости.

Именно так устроена программа: она хранит все отправления вместе и последовательно обращается к каждому за основной этикеткой, а затем аккуратно проверяет, способно ли данное отправление выдать предупреждение. Если да — предупреждение печатается следом; если нет — строка просто пропускается, и список продолжается дальше. В итоге на экране появляется полный комплект этикеток для всей партии в исходном порядке поступления.

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

Допишите Label, Warning, фабрику makeParcel и обработку очереди. Ввод содержит ровно три строки kind weight, где kind равен box или fragile. Для каждого значения выведите box weight=N либо fragile weight=N; сразу после хрупкой посылки выведите warning=handle-with-care. Используйте срез []Labeler и безопасную type assertion к WarningLabeler с ok.

О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    box 5
    fragile 2
    box 9
    
    Ожидаемый вывод
    box weight=5
    fragile weight=2
    warning=handle-with-care
    box weight=9
    
Решение
Как проверяется решение

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

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