go数字和字符交替打印的实现

package main

import (
	"fmt"
	"sync"
)

func main() {
	var resultchan=make(chan interface{})
	var signchan=make(chan struct{})
	var chartArr=[]string{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
	syc:=sync.NewCond(&sync.Mutex{})
	sycend1:=sync.NewCond(&sync.Mutex{})
	sycend2:=sync.NewCond(&sync.Mutex{})
	go func() {
		go func() {
			for _,v:=range chartArr{
				<-signchan
				resultchan<-v
				syc.Signal()
			}
			sycend1.Signal()
		}()
		go func() {
			for i:=1;i<27;i++{
				resultchan<-i
				signchan<- struct{}{}
				syc.L.Lock()
				syc.Wait()
				syc.L.Unlock()
			}
			sycend2.Signal()
		}()
	}()
	go func() {
		sycend1.L.Lock()
		sycend1.Wait()
		sycend1.L.Unlock()
		sycend2.L.Lock()
		sycend2.Wait()
		sycend2.L.Unlock()
		close(resultchan)
	}()
	for v:=range resultchan{
		fmt.Print(v)
	}
}

打印结果:

1A2B3C4D5E6F7G8H9I10J11K12L13M14N15O16P17Q18R19S20T21U22V23W24X25Y26Z
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值