Files
bootdotdev-fcc-learn-golang…/course/13-channels/exercises/5-close/complete.go
wagslane 9be3074de6 first
2023-05-01 15:25:27 -06:00

48 lines
793 B
Go

package main
import (
"fmt"
"time"
)
func countReports(numSentCh chan int) int {
total := 0
for {
numSent, ok := <-numSentCh
if !ok {
break
}
total += numSent
}
return total
}
// TEST SUITE - Don't touch below this line
func test(numBatches int) {
numSentCh := make(chan int)
go sendReports(numBatches, numSentCh)
fmt.Println("Start counting...")
numReports := countReports(numSentCh)
fmt.Printf("%v reports sent!\n", numReports)
fmt.Println("========================")
}
func main() {
test(3)
test(4)
test(5)
test(6)
}
func sendReports(numBatches int, ch chan int) {
for i := 0; i < numBatches; i++ {
numReports := i*23 + 32%17
ch <- numReports
fmt.Printf("Sent batch of %v reports\n", numReports)
time.Sleep(time.Millisecond * 100)
}
close(ch)
}