45 lines
657 B
Go
45 lines
657 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
)
|
|
|
|
func PrintNumbers() {
|
|
const chNum = 2
|
|
firstCh := make(chan int, 10)
|
|
secondCh := make(chan int, 20)
|
|
defer close(firstCh)
|
|
defer close(secondCh)
|
|
|
|
go func() {
|
|
for j := 0; j < 10; j++ {
|
|
firstCh <- (rand.Int() % 100)
|
|
}
|
|
}()
|
|
go func() {
|
|
for j := 0; j < 10; j++ {
|
|
secondCh <- (rand.Int() % 100)
|
|
}
|
|
}()
|
|
|
|
i := 0
|
|
forLoop:
|
|
for {
|
|
select {
|
|
case val1 := <-firstCh:
|
|
fmt.Printf("(%d) From first channel: %d\n", i+1, val1)
|
|
case val2 := <-secondCh:
|
|
fmt.Printf("(%d) From second channel: %d\n", i+1, val2)
|
|
}
|
|
i++
|
|
if i == chNum*10 {
|
|
break forLoop
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
PrintNumbers()
|
|
}
|