当前位置 博文首页 > golang判断chan channel是否关闭的方法

    golang判断chan channel是否关闭的方法

    作者:dotcoo 时间:2021-02-18 15:07

    本文实例讲述了golang判断chan channel是否关闭的方法。分享给大家供大家参考,具体如下:

    群里有朋友问,怎么判断chan是否关闭,因为close的channel不会阻塞,并返回类型的nil值,会导致死循环.在这里写个例子记录一下,并且分享给大家

    如果不判断chan是否关闭

    Notice: 以下代码会产生死循环

    复制代码 代码如下:
    package main
    import (
        "fmt"
    )
    func main() {
        c := make(chan int, 10)
        c <- 1
        c <- 2
        c <- 3
        close(c)
        for {
            fmt.Println(<-c)
        }
    }

    判断短chan是否关闭

    复制代码 代码如下:
    package main
    import (
        "fmt"
    )
    func main() {
        c := make(chan int, 10)
        c <- 1
        c <- 2
        c <- 3
        close(c)
        for {
            i, isClose := <-c
            if !isClose {
                fmt.Println("channel closed!")
                break
            }
            fmt.Println(i)
        }
    }

    希望本文所述对大家Go语言程序设计有所帮助。

    js
    下一篇:没有了