Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Задача: Реализовать полиморфизм через интерфейсы в Go.
- // Нужно определить интерфейс Shape с методом Area() float64.
- // Создать два типа: Rectangle и Circle, которые реализуют Shape.
- // В main пройтись по срезу Shape и вычислить общую площадь.
- package main
- import (
- "fmt"
- "math"
- )
- // Shape – интерфейс для геометрических фигур
- type Shape interface {
- Area() float64
- }
- // TODO: Определите тип Rectangle с полями Width и Height
- //
- // и реализуйте для него метод Area().
- type Rectangle struct {
- Width, Height float64
- }
- func (r Rectangle) Area() float64 {
- return r.Width * r.Height
- }
- // TODO: Определите тип Circle с полем Radius
- // и реализуйте для него метод Area().
- type Circle struct {
- Radius float64
- }
- func (c Circle) Area() float64 {
- return math.Pi * c.Radius * c.Radius
- }
- func main() {
- shapes := []Shape{
- // Инициализируйте несколько Rectangle и Circle, например:
- Rectangle{Width: 3, Height: 4},
- Circle{Radius: 2.5},
- }
- var total float64
- for _, s := range shapes {
- fmt.Println("Площадь:", s.Area())
- total += s.Area()
- }
- fmt.Println("Общая площадь:", total)
- }
Advertisement
Add Comment
Please, Sign In to add comment