目录
1.题目内容//使用两个 goroutine 交替打印序列, // 一个 goroutine 打印数字, // 另外一个 goroutine 打印字母, // 最终效果如下: // //12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ27282.解决方案
waitgroup+2个channel 两个channel交替读取写入参数
package main
import (
"fmt"
"sync"
)
//使用两个 goroutine 交替打印序列,
// 一个 goroutine 打印数字,
// 另外一个 goroutine 打印字母,
// 最终效果如下:
//
//12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728
func main() {
//
wg := sync.WaitGroup{}
wg.Add(2)
arr1 := []int{1, 2, 3, 4, 5, 6}
arr2 := []string{"A", "B", "C", "D", "E", "F"}
c := make(chan int, 1)
d := make(chan string, 1)
go func() {
i := 0
for i < 6 {
fmt.Print(arr1[i])
fmt.Print(arr1[i+1])
c <- 1
i += 2
<-d
}
wg.Done()
}()
go func() {
i := 0
for i < 6 {
<-c
fmt.Print(arr2[i])
fmt.Print(arr2[i+1])
i += 2
d <- "1"
}
wg.Done()
}()
wg.Wait()
fmt.Println()
fmt.Println("hello world!")
}
我是厚积薄发,欢迎大家一键三连,欢迎大家留言