架构理念:[简单][高效][可依赖] 管理理念:[价值][勇气][专注]

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让线程(这里是协程)间传递变量更容易

posted @ 2020-01-18 18:29  文和-Mignet  阅读(438)  评论(0编辑  收藏  举报