aprendago
aprendago copied to clipboard
Exercício: Capítulo 22, Exercício 3 (Nível: 10)
Exercício: Capítulo 22, Exercício 3 (Nível: 10)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!
Desculpa mas passei a faca no receive :100: https://play.golang.org/p/BrNmZKoKHvC
https://play.golang.org/p/V1ujzDWFyjb
#fritei
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
func main() {
c := gen()
go receive(c)
wg.Wait()
fmt.Println("about to exit")
}
func gen() <-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(z <-chan int) {
for i := range z {
fmt.Println(i)
}
return
}
Output
[...]
94
95
96
97
98
99
about to exit
Program exited.
Antes de ver a solução: https://go.dev/play/p/rw7x1bfYrPl depois: https://go.dev/play/p/_OP7R9Sumdy
package main
import (
"fmt"
)
func main() {
c :=make(chan int)
go gen(c)
receive(c)
fmt.Println("about to exit")
}
func gen(c chan int) <-chan int {
for i := 0; i < 100; i++ {
c <- i
}
close(c)
return c
}
func receive(c <-chan int) {
for v := range c {
fmt.Println(v)
}
}