package main
import "fmt"
import "time"
func main() {
message := make(chan string ,1) // no buffer
count := 3
go func() {
for i := 1; i <= count; i++ {
fmt.Println("send message")
message <- fmt.Sprintf("message %d", i)
}
}()
time.Sleep(time.Second * 3)
for i := 1; i <= count; i++ {
fmt.Println(<-message)
}
}
输出是
send message
send message [wait for 3 sec]
message 1
send message
message 2
message 3
如果我message := make(chan string ,1) // no buffer改为
message := make(chan string ,2) // no buffer
我有
send message
send message
send message [wait 3 sec]
message 1
message 2
message 3
为什么 2 个缓冲区通道可以存储 3 个字符串对象?不是2?
相关分类