zoukankan      html  css  js  c++  java
  • on the go way (三)channel 的用法

    3)关闭无缓存的channel不会阻塞

    package main 
    
    import (
        "fmt"
    )
    
    func main(){
           cb := make(chan bool)
            close(cb)
            x := <-cb
            fmt.Printf("%#v
    ", x)
    
            x, ok := <-cb
            fmt.Printf("%#v %#v
    ", x, ok)
    
            ci := make(chan int)
            close(ci)
            y := <-ci
            fmt.Printf("%#v
    ", y)
    }

    对于关闭的channel 没有buffer的channel 读出来的为对应的0值,但如果往里面写数据的话会产生panic

    4)关闭有缓存的channel

     1 package main
     2 
     3 import "fmt"
     4 
     5 func main() {
     6         c := make(chan int, 3)
     7         c <- 15
     8         c <- 34
     9         c <- 65
    10         close(c)
    11         fmt.Printf("%d
    ", <-c)
    12         fmt.Printf("%d
    ", <-c)
    13         fmt.Printf("%d
    ", <-c)
    14         fmt.Printf("%d
    ", <-c)
    15 
    16         c <- 1
    17 }

    关闭之后可以读出来~但是写入还是引发panic

    5)nil channel发生阻塞

    1 package main
    2 
    3 func main() {
    4         var c chan int
    5         <-c
    6 }
  • 相关阅读:
    Memcached安装
    linux 安装telnet
    varnish应用
    linux 安装apache
    varnishlog、Varnishstat详解
    varnish CLI管理
    varnish 子程序流程
    python3 cms识别类
    python3 fofa爬取类
    每日健康打卡
  • 原文地址:https://www.cnblogs.com/OneDream/p/5306563.html
Copyright © 2011-2022 走看看