Go pointer receiver и встраивание struct: изменяемый счётчик

Счётчик раунда

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

В этой задаче Round встраивает Counter как значение. Мы передаём раунд по адресу, поэтому его встроенный счётчик доступен для изменяющих методов. В другом дизайне можно было бы хранить и указатель; это не является требованием pointer-receiver.

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

Допишите методы Add, Reset и Value у Counter, добавьте анонимно встроенный счётчик в Round и закончите scoreRound. Внутри неё последовательно добавьте три числа через продвинутые методы раунда, сохраните сумму, сбросьте счётчик и верните оба наблюдаемых значения.

Формат ввода

В первой строке метка раунда без пробелов. Во второй — три целых числа.

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

Две строки: LABEL: SUM, затем LABEL: 0.

Пример

Ввод:
final
2 3 4

Вывод:
final: 9
final: 0

Пример

Ввод
final
2 3 4
Вывод
final: 9
final: 0
РешениеGo

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи