|
|
- package main
-
- import "fmt"
-
- type Shape interface {
- Area() float64
- Name() string
- }
-
- type triangle struct {
- base float64
- height float64
- }
-
- type rectangle struct {
- length float64
- width float64
- }
-
- type square struct {
- side float64
- }
-
- func (t triangle) Area() float64 {
- return (t.base * t.height) / 2
- }
-
- func (t triangle) Name() string {
- return "triangle"
- }
-
- func (r rectangle) Area() float64 {
- return r.length * r.width
- }
-
- func (r rectangle) Name() string {
- return "rectangle"
- }
-
- func (s square) Area() float64 {
- return s.side * s.side
- }
-
- func (s square) Name() string {
- return "square"
- }
-
- func printShapeDetails(shapes ...Shape) {
- for _, item := range shapes {
- fmt.Printf("The area of %s is %.2f\n", item.Name(), item.Area())
- }
- }
-
- func main() {
-
- t := triangle{15.5, 20.1}
- r := rectangle{20, 10}
- s := square{10}
-
- printShapeDetails(t, r, s)
-
- }
|