Challenge 2 — Solution Task: Using the Shape interface, Circle, and Rectangle from this chapter, create a slice []Shape containing at least 3 shapes (mixing circles and rectangles), then loop over it printing each one's area. Add up all the areas into a single total, printed at the end. package main import "fmt" type Shape interface { Area() float64 } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 3.14159 * c.Radius * c.Radius } type Rectangle struct { Width, Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } func main() { shapes := []Shape{ Circle{Radius: 3}, Rectangle{Width: 4, Height: 5}, Circle{Radius: 1.5}, } total := 0.0 for _, shape := range shapes { area := shape.Area() fmt.Printf("%.2f\n", area) total += area } fmt.Printf("Total: %.2f\n", total) } Expected output: 28.27 20.00 7.07 Total: 55.34 Notes: - shapes mixes two different concrete types (Circle and Rectangle) in a single []Shape slice — this is only possible because both satisfy the same interface; a plain []Circle slice could never hold a Rectangle. - shape.Area() inside the loop calls the correct version automatically depending on which concrete type is currently stored in shape — Go resolves this at runtime without any if/switch on type needed. - total accumulates exactly like the running totals from earlier Fundamentals chapters — there's nothing interface-specific about the summing itself.