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