go语言从例子开始之Example23.通道缓冲
2019-10-28 10:40 _天枢 阅读(214) 评论(0) 编辑 收藏 举报默认通道是 无缓冲 的,这意味着只有在对应的接收(<- chan
)通道准备好接收时,才允许进行发送(chan <-
)。可缓存通道允许在没有对应接收方的情况下,缓存限定数量的值。
不支持缓冲:
mk := make(chan string)
通道不支持缓存,如果进行缓冲报如下错误。
mk <- "chan"
fatal error: all goroutines are asleep - deadlock!
Example:
package main import "fmt" func main(){ //使用 make(chan val-type) 创建一个新的通道。通道类型就是他们需要传递值的类型,最多缓存两个值 mk := make(chan string, 2) mk <- "buf" mk <- "chan" fmt.Println(<- mk) fmt.Println(<- mk) }
Result:
$ go run example.go
buf
chan
作 者:
天枢
出 处:
http://www.cnblogs.com/yhleng/
关于作者:专注于软件自动化测试领域。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者
直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐】
一下。您的鼓励是作者坚持原创和持续写作的最大动力!