go语音之进阶篇无缓冲channel
Posted nulige
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语音之进阶篇无缓冲channel相关的知识,希望对你有一定的参考价值。
1、无缓冲channel
示例:
package main import ( "fmt" "time" ) func main() { //创建一个无缓存的channel ch := make(chan int, 0) //len(ch)缓冲区剩余数据个数, cap(ch)缓冲区大小 fmt.Printf("len(ch) = %d, cap(ch)= %d ", len(ch), cap(ch)) //新建协程 go func() { for i := 0; i < 3; i++ { fmt.Printf("子协程:i = %d ", i) ch <- i //往chan写内容 } }() //延时 time.Sleep(2 * time.Second) for i := 0; i < 3; i++ { num := <-ch //读管道中内容,没有内容前,阻塞 fmt.Println("num = ", num) } }
执行结果:
len(ch) = 0, cap(ch)= 0 子协程:i = 0 num = 0 子协程:i = 1 子协程:i = 2 num = 1 num = 2
以上是关于go语音之进阶篇无缓冲channel的主要内容,如果未能解决你的问题,请参考以下文章