aprendago
aprendago copied to clipboard
Exercício: Capítulo 22, Exercício 5 (Nível: 10)
Exercício: Capítulo 22, Exercício 5 (Nível: 10)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!
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.
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)
}
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 =
}