package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
var number, letter = make(chan bool, 1), make(chan bool, 1)
func printInt() {
defer wg.Done()
i := 1
for {
_, ok := <-number
if !ok {
close(letter)
return
}
fmt.Printf("%d%d", i, i+1)
i += 2
letter <- true
}
}
func printLetter() {
defer wg.Done()
l := 'A'
for {
_, _ = <-letter
if l > 'Z' {
close(number)
return
}
fmt.Printf("%c%c", l, l+1)
l += 2
number <- true
}
}
func AllInOne() {
defer wg.Done()
var i = 1
var l = 'A'
for {
select {
case _, ok := <-number:
if i > 28 || !ok {
close(letter)
return
}
fmt.Printf("%d%d", i, i+1)
i += 2
letter <- true
case _, ok := <-letter:
if !ok || l > 'Z' {
close(number)
return
}
fmt.Printf("%c%c", l, l+1)
l += 2
number <- true
default:
}
}
}
func main() {
wg.Add(1)
go AllInOne()
// go printInt()
// go printLetter()
number <- true
wg.Wait()
}