Open vkorbes opened 3 years ago
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.
`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) }`
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)
}
}
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
}
}
}
}
Exercício: Capítulo 22, Exercício 6 (Nível: 10)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!