Перейти к содержимому
Задача · Интерфейсы · урок 9 из 10

Задача: общая площадь

Интерфейс Shape с методом Area() float64 и реализующие его типы Rect и Circle уже объявлены. Напишите функцию func totalArea(shapes []Shape) float64, которая возвращает сумму площадей всех фигур среза. Фигуры могут быть любых типов, реализующих Shape, а не только Rect и Circle.

  • r := Rect{Width: 2, Height: 3}, sq := Rect{Width: 1, Height: 1}, затем totalArea([]Shape{r, sq}) → 7
  • c := Circle{Radius: 1}, затем totalArea([]Shape{c}) → 3.141592653589793
  • totalArea(nil) → 0

Ограничения: одна и та же фигура может встретиться в срезе несколько раз, и функция учитывает её каждый раз; срез может быть пустым или равным nil, тогда сумма 0; тесты сравнивают результат с точностью до 1e-9.

Не добавляйте лишних импортов, если в задаче это прямо не сказано.

area.go — go
go · строк: 28
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом