1
0
Fork 0
pr3-ws202627/go/05-concurrency/select.go

42 lines
742 B
Go

package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
ch1 := make(chan string)
ch2 := make(chan string)
go func() {
time.Sleep(time.Duration(rand.Intn(5)+1) * time.Second)
ch1 <- "Message from channel 1"
}()
go func() {
time.Sleep(time.Duration(rand.Intn(5)+1) * time.Second)
ch2 <- "Message from channel 2"
}()
count := 10
var channels []chan string
for i := range count {
ch := make(chan string)
channels = append(channels, ch)
go func() {
time.Sleep(time.Duration(rand.Intn(5)+1) * time.Second)
ch <- fmt.Sprintln("Message from Channel %d", i)
}()
}
fanIn := make(chan string, count)
for i := range count {
go func() { fanIn <- <-channels[i] }()
}
println("Recieved: ", <-fanIn)
}