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()
}
