shapes of justice
This commit is contained in:
parent
84ca81cdd5
commit
1a51fa131c
|
@ -0,0 +1,3 @@
|
||||||
|
include_rules
|
||||||
|
|
||||||
|
: main.go |> !gccgo |> ../../bin/visitor
|
|
@ -0,0 +1,43 @@
|
||||||
|
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)
|
||||||
|
}
|
Loading…
Reference in New Issue