workshit/src/visitor/main.go

44 lines
615 B
Go

package main
// Shape defines the base for shape functions
type Shape interface {
Area() float64
Perimeter() float64
}
type Square struct {
Shape
Arm float64
}
func (s *Square) Area() float64 {
return s.Arm * s.Arm
}
func (s *Square) Perimeter() float64 {
return s.Arm * 4
}
type Triangle struct {
Shape
Base float64
Height float64
}
func (t *Triangle) Area() float64 {
return (t.Base * t.Height) / 2
}
func (t *Triangle) Perimeter() float64 {
return 0.0 // I forgot how to do this from just base and height.
}
func main() {
t := &Triangle{
Base: 15,
Height: 30,
}
myT := t.(Shape)
}