go func()中的内容如果没有sleep,主线程不保证能执行完
package main
import (
"fmt"
"time"
)
func main() {
msg := make(chan string, 10)
msg2 := make(chan string, 5)
go func() {
msg <- "a"
msg <- "b"
msg <- "c"
msg2 <- "1"
msg2 <- "2"
msg2 <- "3"
}()
go func() {
for v := range msg {
fmt.Println(v)
}
}()
//1 close(msg)
for v := range msg2 {
fmt.Println(v)
//2 作用和1类似,避免deadlock
if len(msg2) <= 0 {
break
}
}
time.Sleep(1)
}
1
2
a
b
c
3