如何使用golang中的chan-创新互联

chan是golang中非常重要的一个东西,用来做goroutine的通信,因为golang程序必然会有多个goroutine,如何同步这些goroutine就很重要了。

为广东等地区用户提供了全套网页设计制作服务,及广东网站建设行业解决方案。主营业务为成都网站设计、做网站、广东网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

使用chan时有几个心得:

首先,永远是符号<-进行读取或者写入,譬如v,ok := <-c是读取,而c <- v是写入。

其次,读取时,如果没有ok,也是可以读取的。不过如果closed也是能读的,没有赋值而已;如果要知道是否closed得加ok,也就是除非chan永远不关闭,否则读取应该用v,ok := <-c而不是用v := <-c的方式。

再次,不能向closed的chan写入,所以一般写入时需要用一个信号的chan(一般buffer为1),来判断是否写入或者放弃,用select判断是写入成功了,还是正在关闭需要放弃写入。

最后,如果closed后,chan有数据,ok还是true的,直到chan没有数据了才false。

当一个chanel被关闭后,再取出不会阻塞,而是返回零值

package main
 
import "fmt"
 
func main() {
    c := make(chan int, 5)
    c <- 123
    close(c)
     
    fmt.Println(<-c)
    fmt.Println(<-c)
}

输出

123
0

以上就是golang chan是否关闭的详细内容,更多请关注创新互联其它相关文章!


文章名称:如何使用golang中的chan-创新互联
网页URL:http://bzwzjz.com/article/copisj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: H5网站制作 定制级高端网站建设 成都企业网站制作 高端品牌网站建设 成都商城网站制作 成都模版网站建设 公司网站建设 成都网站建设 成都定制网站建设 网站建设公司 成都网站建设 成都网站设计制作公司 企业网站建设公司 高端网站设计 成都品牌网站设计 网站建设费用 成都品牌网站建设 网站建设公司 成都网站设计 定制网站设计 企业网站设计 网站建设推广