vkorbes / aprendago

Curso completo em português da linguagem Go, de zero a ninja! 🇧🇷
http://aprendago.com
1.03k stars 183 forks source link

Capítulo 22, Exercício 6 (Nível: 10) #82

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 22, Exercício 6 (Nível: 10)

Link para o vídeo:

Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!

an4kein commented 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.
joelgarciajr84 commented 2 years ago

`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 11 months ago

Playground

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)
    }

}
LeandroCGMS commented 3 months ago
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
                }
        }
    }
}