关于go协程使用chan的疑惑

xiaogan18 · · 1170 次点击
你用阻塞chan,不要缓冲,自然就可以了。不要make,直接定义
#7
更多评论
每个goroutine的执行顺序是不确定的,并不是谁先启动就谁先执行,我在https://play.golang.org/上运行的结果还是这样的呢:1ab23cd45ef67gh89i
#1
```go package main import ( "fmt" "sync" ) const ( nums = "123456789" letters = "abcdefghi" ) func main() { ch1 := make(chan int) ch2 := make(chan int) wd := sync.WaitGroup{} wd.Add(len(nums) + len(letters)) fun1 := func() { for _, v := range nums { <-ch2 fmt.Print(string(v)) wd.Done() ch1 <- 1 } } fun2 := func() { for _, v := range letters { <-ch1 fmt.Print(string(v)) wd.Done() ch2 <- 1 } } go fun1() go fun2() ch2 <- 1 wd.Wait() } ```
#2