Capítulo 22, Exercício 6 (Nível: 10)
vkorbes opened this issue · comments
V Körbes commented
Eduardo Barbosa (an4kein) commented
https://play.golang.org/p/LSXTY6Qu2Qb
package main
import "fmt"
/* - Escreva um programa que coloque 100 números em um canal, retire os números do canal, e demonstre-os. */
func main() {
novoCanal := coloque()
for i := range novoCanal {
fmt.Println("Canal recebeu:", i)
}
}
func coloque() chan int {
canal := make(chan int)
go func() {
for i := 1; i <= 100; i++ {
canal <- i
}
close(canal)
}()
return canal
}
Output
Canal recebeu: 1
Canal recebeu: 2
Canal recebeu: 3
Canal recebeu: 4
Canal recebeu: 5
[...]
Canal recebeu: 97
Canal recebeu: 98
Canal recebeu: 99
Canal recebeu: 100
Program exited.
Joel Garcia Jr commented
`package main
import "fmt"
func main() {
totalMessages := 100
comChannel := make(chan int)
go sender(comChannel, totalMessages)
reader(comChannel)
}
func reader(comChannel chan int) {
for msg := range comChannel {
fmt.Println("MESSAGE RECEIVED FROM CHANNEL: ", msg)
}
}
func sender(channel chan int, totalMsgs int) {
for i := 0; i < totalMsgs; i++ {
channel <- i
}
close(channel)
}`
LelecoNN commented
package main
import "fmt"
func main() {
canal1 := make(chan int)
canal2 := receber(canal1)
imprime(canal2)
//fmt.Println()
}
func receber(canal1 chan int) <-chan int {
go func() {
for i := 0; i < 100; i++ {
canal1 <- i
}
close(canal1)
}()
return canal1
}
func imprime(s <-chan int) {
for v := range s {
fmt.Println(v)
}
}
Leandro Santos de Carvalho commented
package main
import (
"fmt"
)
func main() {
c := make(chan int)
go func() {
for i := 1; i <= 100; i++ {
c <- i
}
close(c)
}()
for {
select {
case v, ok := <- c:
if ok {
fmt.Println(v)
} else {
fmt.Println("Não há mais valores no canal c, \nvalor default ->", v)
return
}
}
}
}