aprendago
aprendago copied to clipboard
Exercício: Capítulo 22, Exercício 4 (Nível: 10)
Exercício: Capítulo 22, Exercício 4 (Nível: 10)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!
https://play.golang.org/p/kHnk882FMu3 é meio confuso lembrar do canal que sai, canal que entra
https://play.golang.org/p/5IcvG0rMsIl
package main
import (
"fmt"
"sync"
)
// - ...use um select statement para demonstrar os valores do canal.
var wg sync.WaitGroup
func main() {
q := make(chan int)
c := gen(q)
go receive(c, q)
wg.Wait()
fmt.Println("about to exit")
}
func gen(q <-chan int) <-chan int {
c := make(chan int)
wg.Add(1)
go func() {
for i := 0; i < 100; i++ {
c <- i
}
wg.Done()
}()
return c
}
func receive(c <-chan int, q chan int) {
for {
select {
case v := <-c:
fmt.Println("Valores do canal C:", v)
}
}
}
Output
Valores do canal C: 0
Valores do canal C: 1
Valores do canal C: 2
Valores do canal C: 3
Valores do canal C: 4
Valores do canal C: 5
[...]
Valores do canal C: 92
Valores do canal C: 93
Valores do canal C: 94
Valores do canal C: 95
Valores do canal C: 96
Valores do canal C: 97
Valores do canal C: 98
about to exit
Program exited.
https://go.dev/play/p/Yh64rufPePc