其他分享
首页 > 其他分享> > Golang多线程垂直输出字符串

Golang多线程垂直输出字符串

作者:互联网

[本文出自天外归云的博客园]

三个字符串,abc,def,ghi,请用多线程顺序输出:adg,beh,cfi

抛砖引玉,我的代码如下:

package main

import "fmt"
import "sync"

func printStr(a, b, c string) {
        strLen := len(a)
        var wg sync.WaitGroup
        wg.Add(strLen)
        msgs := make(chan string, strLen)
        go func() {
                for i := 0; i < strLen; i++ {
                        defer wg.Done()
                        fmt.Print(<- msgs)
                }
        } ()
        for i := 0; i < strLen; i++ {
                msgs <- fmt.Sprintf("%+v%+v%+v\n", string(a[i]), string(b[i]), string(c[i]))
        }
        wg.Wait()
}

func main() {
        a := "abc"
        b := "def"
        c := "ghi"
        printStr(a, b, c)
}

你还有更好的办法吗?

标签:wg,fmt,sync,Golang,字符串,import,多线程,strLen
来源: https://www.cnblogs.com/LanTianYou/p/16426440.html