golang 有缓冲channel和无缓冲channel
无缓冲channel
chan无人接收会一直阻塞。
func Echo(nums []int) <-chan int {
out := make(chan int)
// 这里一定要启动一个协程,不然会panic
go func() {
for _, n := range nums {
out <- n
}
close(out)
}()
return out
}
func TestEcho(t *testing.T) {
nums := []int{1, 2, 3, 4}
out := Echo(nums)
for v := range out {
fmt.Printf("%d", v)
}
}
有缓冲chan
不强制启动一个协程,先写入数据之后,后续程序慢慢读取。

浙公网安备 33010602011771号