package main

import (
	"fmt"
)

func main() {
	ch := make(chan int)
	ch2 := make(chan int)

	go func() {
		for i := 0; i < 5; i++ {
			ch <- i
		}
		close(ch)
	}()

	go func() {
		for i := 0; i < 5; i++ {
			ch2 <- i
		}
		close(ch2)
	}()

loop:
	for {
		select {
		case val, ok := <-ch:
			if ok {
				fmt.Println("[ch] Received value:", val)
			} else {
				fmt.Println("[ch] Channel closed")
				ch = nil

			}
		case val, ok := <-ch2:
			if ok {
				fmt.Println("[ch2] Received value:", val)
			} else {
				fmt.Println("[ch2] Channel closed")
				ch2 = nil

			}
		default:
			if ch == nil && ch2 == nil {
				break loop
			}
		}
	}

	fmt.Println("🔴 end program...")
}