go 实现两个goroutine交替执行打印数字和字母

package main

import (
    "fmt"
    "sync"
)

var wg sync.WaitGroup

func letter(ch chan string)  {
    defer wg.Done()
    for i:=0; i<26; i++{
        ch <- fmt.Sprintf("%c", 'A'+i)
    }
    close(ch)
}

func number(ch chan int)  {
    defer wg.Done()
    for i:=1; i<29; i++{
        ch <- i
    }
    close(ch)
}

func main() {
    leChar := make(chan string, 26)
    intChar := make(chan int, 28)
    wg.Add(3)
    go letter(leChar)
    go number(intChar)

    go func() {
        defer wg.Done()
        for i := range intChar{
            fmt.Printf("%d%d%s%s",i,<-intChar, <-leChar, <-leChar)
        }
    }()

    wg.Wait()
}
 
原文地址:https://www.cnblogs.com/Caoxt/p/14643606.html