channels.go 680 B

12345678910111213141516171819202122232425262728293031323334
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func escrever(texto string, canal chan string) {
  7. time.Sleep(time.Second * 2)
  8. for i := 0; i < 5; i++ {
  9. canal <- texto //Envia valor para canal
  10. time.Sleep(time.Second)
  11. }
  12. close(canal) // Informa o programa para encerrar o canal.
  13. }
  14. func main() {
  15. canal := make(chan string)
  16. go escrever("Olá Mundo!", canal)
  17. fmt.Println("Após a função escrever. ")
  18. for {
  19. mensagem, aberto := <-canal // Recebo valor do canal.
  20. if !aberto { // Encerra o loop caso o canal esteja fechado.
  21. break
  22. }
  23. println(mensagem)
  24. }
  25. for mensagem := range canal { // Forma mais simples de executar o canal.
  26. fmt.Println(mensagem)
  27. }
  28. }