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) }