Entities
Create new folder named entities. In entities folder, create new entities as below:
Geometry Entity
In entities folder, create new file named geometry.go as below:
package entities
type Geometry interface {
GetName() string
Area() float64
Perimeter() float64
}
Circle Entity
In entities folder, create new file named circle.go as below:
package entities
import "math"
type Circle struct {
Name string
R float64
}
func (circle Circle) GetName() string {
return circle.Name
}
func (circle Circle) Area() float64 {
return math.Pi * circle.R * circle.R
}
func (circle Circle) Perimeter() float64 {
return 2 * math.Pi * circle.R
}
Square Entity
In entities folder, create new file named square.go as below:
package entities
type Square struct {
Name string
A float64
}
func (square Square) GetName() string {
return square.Name
}
func (square Square) Area() float64 {
return square.A * square.A
}
func (square Square) Perimeter() float64 {
return square.A * 4
}
Rectangle Entity
In entities folder, create new file named rectangle.go as below:
package entities
type Rectangle struct {
Name string
A float64
B float64
}
func (rectangle Rectangle) GetName() string {
return rectangle.Name
}
func (rectangle Rectangle) Area() float64 {
return rectangle.A * rectangle.B
}
func (rectangle Rectangle) Perimeter() float64 {
return (rectangle.A + rectangle.B) * 2
}
Application
Create new folder named src. In src folder, create new file named main.go as below:
package main
import (
"entities"
"fmt"
)
func main() {
circle1 := entities.Circle{Name: "Circle 1", R: 4}
circle2 := entities.Circle{Name: "Circle 2", R: 7}
rectangle1 := entities.Rectangle{Name: "Rectangle 1", A: 4, B: 10}
rectangle2 := entities.Rectangle{Name: "Rectangle 1", A: 2, B: 7}
square1 := entities.Square{Name: "Square 1", A: 6}
square2 := entities.Square{Name: "Square 1", A: 10}
geometries := []entities.Geometry{circle1, rectangle1, square1, rectangle2, square2, circle2}
for _, geometry := range geometries {
fmt.Println(geometry.GetName())
fmt.Printf("Area: %0.2f\n", geometry.Area())
fmt.Printf("Perimeter: %0.2f\n", geometry.Perimeter())
fmt.Println("----------------------")
}
}
Output
Open Terminal windows in Visual Studio Code and run command line: go run main.go
Circle 1
Area: 50.27
Perimeter: 25.13
----------------------
Rectangle 1
Area: 40.00
Perimeter: 28.00
----------------------
Square 1
Area: 36.00
Perimeter: 24.00
----------------------
Rectangle 1
Area: 14.00
Perimeter: 18.00
----------------------
Square 1
Area: 100.00
Perimeter: 40.00
----------------------
Circle 2
Area: 153.94
Perimeter: 43.98
----------------------