我学习了 Go 中的缓冲通道,但有些魔法对我来说是隐藏的。我有这个代码
package main
import (
"fmt"
)
func write(ch chan int) {
for i := 1; i <= 5; i++ {
ch <- i
fmt.Printf("Channel's length is %d\n", len(ch))
}
close(ch)
}
func main() {
ch := make(chan int, 2)
go write(ch)
for v := range ch {
fmt.Println(v)
}
}
输出是
Channel's length is 0
Channel's length is 1
Channel's length is 2
1
2
3
4
Channel's length is 2
Channel's length is 0
5
为什么 write goroutine 中第一次迭代的通道长度为零?我不知道什么?
喵喵时光机
相关分类