无缓冲channel可用于两个不同go程间同步数据,即在一个go程中阻塞channel,在另外一个go程中释放channel,以达到数据同步的目的。声明方式:ch := make(chan int)
无缓冲channel不能用来保存数据,其长度和容量都为零,可查看长度和容量:len(ch)/cap(ch)
示例代码:
package main
import (
"fmt"
)
func main() {
//无缓冲channel
ch := make(chan int)
go func() {
for i := 0; i < 5; i++ {
fmt.Printf("第%d次写入数据\n", i)
ch <- i
fmt.Printf("chan长度是:%d,容量是:%d\n", len(ch), cap(ch))
}
}()
for i := 0; i < 5; i++ {
fmt.Printf("第%d次读取数据\n", <-ch)
}
}
在这段代码中,多有读取的数据必然需要先写入
网友评论