Exercises & activities from the go workshop provided by Packt: https://courses.packtpub.com/courses/go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

62 lines
884 B

package main
import "fmt"
type Shape interface {
Area() float64
Name() string
}
type triangle struct {
base float64
height float64
}
type rectangle struct {
length float64
width float64
}
type square struct {
side float64
}
func (t triangle) Area() float64 {
return (t.base * t.height) / 2
}
func (t triangle) Name() string {
return "triangle"
}
func (r rectangle) Area() float64 {
return r.length * r.width
}
func (r rectangle) Name() string {
return "rectangle"
}
func (s square) Area() float64 {
return s.side * s.side
}
func (s square) Name() string {
return "square"
}
func printShapeDetails(shapes ...Shape) {
for _, item := range shapes {
fmt.Printf("The area of %s is %.2f\n", item.Name(), item.Area())
}
}
func main() {
t := triangle{15.5, 20.1}
r := rectangle{20, 10}
s := square{10}
printShapeDetails(t, r, s)
}