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