go-by-test/shapes/shapes.go

40 lines
522 B
Go

package shapes
import (
"math"
)
type Shape interface {
Area() float64
}
type Rectangle struct {
Width float64
Height float64
}
func (r Rectangle) Perimeter() float64 {
return 2 * (r.Width + r.Height)
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return c.Radius * c.Radius * math.Pi
}
type Triangle struct {
Width float64
Height float64
}
func (t Triangle) Area() float64 {
return t.Width * t.Height * 0.5
}