go练习:交叉输出数字和字母
问题:请使用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C....26Z
java的实现
我们来练习使用go实现
package main import ( "fmt" ) func main() { var h = 65 var c, d, e = make(chan int), make(chan int), make(chan int) go func() { for i := 0; i < 26; i++ { <-c fmt.Print(i+1, ">") d <- 1 } }() go func() { for i := h; i < h+26; i++ { <-d fmt.Printf("%c|", i) if i < h+26-1 { c <- 1 } } e <- 1 }() c <- 1 <-e }
可以看到,go语言对于这种场景,实现起来更加自然,channel让线程(这里是协程)间传递变量更容易