vkorbes / aprendago

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

Exercício: Capítulo 22, Exercício 4 (Nível: 10) #69

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 22, Exercício 4 (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!

haystem commented 3 years ago

https://play.golang.org/p/kHnk882FMu3 é meio confuso lembrar do canal que sai, canal que entra

an4kein commented 3 years ago

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.
LeandroCGMS commented 1 week ago

https://go.dev/play/p/Yh64rufPePc