Goga21

Полиморфизм

Mar 5th, 2026
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.44 KB | Source Code | 0 0
  1. // Задача: Реализовать полиморфизм через интерфейсы в Go.
  2. // Нужно определить интерфейс Shape с методом Area() float64.
  3. // Создать два типа: Rectangle и Circle, которые реализуют Shape.
  4. // В main пройтись по срезу Shape и вычислить общую площадь.
  5.  
  6. package main
  7.  
  8. import (
  9.     "fmt"
  10.     "math"
  11. )
  12.  
  13. // Shape – интерфейс для геометрических фигур
  14. type Shape interface {
  15.     Area() float64
  16. }
  17.  
  18. // TODO: Определите тип Rectangle с полями Width и Height
  19. //
  20. //  и реализуйте для него метод Area().
  21. type Rectangle struct {
  22.     Width, Height float64
  23. }
  24.  
  25. func (r Rectangle) Area() float64 {
  26.     return r.Width * r.Height
  27. }
  28.  
  29. // TODO: Определите тип Circle с полем Radius
  30. //       и реализуйте для него метод Area().
  31.  
  32. type Circle struct {
  33.     Radius float64
  34. }
  35.  
  36. func (c Circle) Area() float64 {
  37.     return math.Pi * c.Radius * c.Radius
  38. }
  39.  
  40. func main() {
  41.     shapes := []Shape{
  42.         // Инициализируйте несколько Rectangle и Circle, например:
  43.         Rectangle{Width: 3, Height: 4},
  44.         Circle{Radius: 2.5},
  45.     }
  46.  
  47.     var total float64
  48.     for _, s := range shapes {
  49.         fmt.Println("Площадь:", s.Area())
  50.         total += s.Area()
  51.     }
  52.     fmt.Println("Общая площадь:", total)
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment