问题描述:
使用两个goroutine交替打印序列,一个goroutinue打印数字,另一个goroutine打印字母,最终结果如下:
1A2B3C4D5E6F7G
使用通道来进行通信,另外使用struct{}类型来传输,减少内存消耗。
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
var flag = make(chan struct{})
func main() {
var arr1 = []int{1, 2, 3, 4, 5, 6, 7}
var arr2 = []string{"A", "B", "C", "D", "E", "F", "G"}
wg.Add(2)
go func(str []int) {
defer wg.Done()
for _, v := range str {
fmt.Print(v)
flag <- struct{}{}
<-flag
}
}(arr1)
go func(str []string) {
defer wg.Done()
for _, v := range str {
<-flag
fmt.Print(v)
flag <- struct{}{}
}
}(arr2)
wg.Wait()
}