shapes of justice

This commit is contained in:
Christine Dodrill 2015-06-23 17:51:05 -07:00
parent 84ca81cdd5
commit 1a51fa131c
2 changed files with 46 additions and 0 deletions

3
src/visitor/Tupfile Normal file
View File

@ -0,0 +1,3 @@
include_rules
: main.go |> !gccgo |> ../../bin/visitor

43
src/visitor/main.go Normal file
View File

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