aprendago icon indicating copy to clipboard operation
aprendago copied to clipboard

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

Open vkorbes opened this issue 4 years ago • 3 comments

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!

vkorbes avatar Sep 30 '20 18:09 vkorbes

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

haystem avatar Dec 22 '20 21:12 haystem

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.

an4kein avatar Mar 16 '21 21:03 an4kein

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

LeandroCGMS avatar Jun 27 '24 16:06 LeandroCGMS