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 5 (Nível: 10) #70

Open vkorbes opened 3 years ago

vkorbes commented 3 years ago

Exercício: Capítulo 22, Exercício 5 (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/snQRVxMA0dw

package main

import (
    "fmt"
)

func main() {
    canal := make(chan int)

    go func() {
        canal <- 1337
        canal <- 1338
        // aqui nao existe mais valor no canal, logo o valor eh FALSE no proximo print: linha 20 and 21
        close(canal)
    }()
    a, ok := <-canal
    fmt.Println(a, ok)
    b, ok := <-canal
    fmt.Println(b, ok)
    c, ok := <-canal
    fmt.Println(c, ok)
}

Output

1337 true
1338 true
0 false

Program exited.
LelecoNN commented 8 months ago

Playground

package main

import (
    "fmt"
)

func main() {
    c := make(chan int)
    go func() {
        c <- 100
        c <- 10500

    }()
    v, ok := <-c
    fmt.Println(v, ok)
    v, ok = <-c
    fmt.Println(v, ok)
    close(c)
    v, ok = <-c
    fmt.Println(v, ok)

}
LeandroCGMS commented 1 week 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, ok)
            } else {
                fmt.Println(v, ok)
                return
            }
        }
    }

    // v, ok :=

    // v, ok =
}