好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Golang中channel使用的一些小技巧

关闭2次

复制代码 代码如下:


ch := make(chan bool)
close(ch)
close(ch)  // 这样会panic的,channel不能close两次


读取的时候channel提前关闭了

复制代码 代码如下:


ch := make(chan string)
close(ch)
i :=


向已经关闭的channel写数据

复制代码 代码如下:


ch := make(chan string)
close(ch)
ch


判断channel是否close

复制代码 代码如下:


i, ok := if ok {
    println(i)
} else {
    println("channel closed")
}


for循环读取channel

复制代码 代码如下:


for i := range ch { // ch关闭时,for循环会自动结束
    println(i)
}


防止读取超时

复制代码 代码如下:


select {
    case         println("read channel timeout")
    case i :=         println(i)
}


防止写入超时

复制代码 代码如下:


// 其实和读取超时很像
select {
    case         println("write channel timeout")
    case ch         println("write ok")
}

查看更多关于Golang中channel使用的一些小技巧的详细内容...

  阅读:71次