我创建 5 个通道并发送数据 5 次:
package main
import "fmt"
func greet(c chan string) {
fmt.Println("Hello " + <-c + "!")
}
func main() {
fmt.Println("main() started")
c := make(chan string)
for i:=0; i<5; i++ {
go greet(c)
}
c <- "AAA"
c <- "BBB"
c <- "CCC"
c <- "DDD"
c <- "EEE"
fmt.Println("main() stopped")
}
我预计所有 5 个字符串都会被打印出来。但是,我发现输出可变。一些输出是:
$ ./rnchannel
main() started
Hello AAA!
Hello DDD!
Hello BBB!
Hello CCC!
Hello EEE!
main() stopped
$ ./rnchannel
main() started
Hello CCC!
Hello DDD!
main() stopped
$ ./rnchannel
main() started
Hello CCC!
Hello BBB!
Hello AAA!
Hello DDD!
main() stopped
为什么打印的行数可变?
繁花如伊
慕容3067478