Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // interfaces_poly.go | |
| package main | |
| import "fmt" | |
| type Shaper interface { | |
| Area() float32 | |
| } | |
| type Square struct { | |
| side float32 | |
| } | |
| func (sq *Square) Area() float32 { | |
| return sq.side * sq.side | |
| } | |
| type Rectangle struct { | |
| length, width float32 | |
| } | |
| func (r Rectangle) Area() float32 { | |
| return r.length * r.width | |
| } | |
| func main() { | |
| r := Rectangle{5, 3} // Area() of Rectangle needs a value | |
| q := &Square{5} // Area() of Square needs a pointer | |
| shapes := []Shaper{r, q} | |
| fmt.Println("Looping through shapes for area ...") | |
| for n, _ := range shapes { | |
| fmt.Println("Shape details: ", shapes[n]) | |
| fmt.Println("Area of this shape is: ", shapes[n].Area()) | |
| } | |
| } | |
| /* Output: | |
| Looping through shapes for area ... | |
| Shape details: {5 3} | |
| Area of this shape is: 15 | |
| Shape details: &{5} | |
| Area of this shape is: 25 | |
| */ | |