使用Golang的channel交叉打印两个数组

Go的channel提供了强大的同步功能,那么如何使用channel交叉打印两个数组呢?灰常简单,只需设置两个channel变量,数组1打印完一个值就用channel通知数组2,同理数组2打印完一个值用另一个channel通知数组1,即可实现同步

package main

import "fmt"

func main(){
	ch1 :=make(chan int)
	ch2 :=make(chan string)
	str :=[5]string{"a","b","c","d","e"}
	go func() {
		for i:=0;i<5;i++{
			ch1<-i
			fmt.Print(i+1)
			<-ch2
		}
	}()

	for _,v :=range str{
		<-ch1
		fmt.Print(v)
		ch2<-v
	}
}

结果:

1a2b3c4d5e
Process finished with exit code 0

 

你可能感兴趣的:(Go)