Challenge 2 — Solution Task: Given numbers := []int{1, 2, 3, 4, 5}, launch a goroutine per number that sends its square into a buffered channel sized to len(numbers). Receive all 5 results in a loop, summing them into a total printed at the end. package main import "fmt" func square(n int, results chan int) { results <- n * n } func main() { numbers := []int{1, 2, 3, 4, 5} results := make(chan int, len(numbers)) for _, n := range numbers { go square(n, results) } total := 0 for i := 0; i < len(numbers); i++ { total += <-results } fmt.Println("Total:", total) } Expected output: Total: 55 Notes: - The buffered channel (capacity 5) lets all 5 goroutines send their results without any of them having to wait for a receiver to be ready first. - The receiving loop runs exactly len(numbers) times, guaranteeing every result is collected — the ORDER they arrive in is not guaranteed, but the total (1+4+9+16+25 = 55) is the same regardless of order, since addition doesn't care about sequence. - total += <-results both receives a value from the channel and adds it to total in one expression.