golang判斷chan channel是否關(guān)閉的方法
本文實(shí)例講述了golang判斷chan channel是否關(guān)閉的方法。分享給大家供大家參考,具體如下:
群里有朋友問,怎么判斷chan是否關(guān)閉,因?yàn)閏lose的channel不會(huì)阻塞,并返回類型的nil值,會(huì)導(dǎo)致死循環(huán).在這里寫個(gè)例子記錄一下,并且分享給大家
如果不判斷chan是否關(guān)閉
Notice: 以下代碼會(huì)產(chǎn)生死循環(huán)
import (
"fmt"
)
func main() {
c := make(chan int, 10)
c <- 1
c <- 2
c <- 3
close(c)
for {
fmt.Println(<-c)
}
}
判斷短chan是否關(guān)閉
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)
}
}
希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。
相關(guān)文章
Golang使用archive/zip包實(shí)現(xiàn)ZIP壓縮與解壓
Golang?中的?archive/zip?包用于處理?ZIP?格式的壓縮文件,提供了一系列用于創(chuàng)建、讀取和解壓縮?ZIP?格式文件的函數(shù)和類型,使用起來(lái)非常方便,下面就跟隨小編一起了解一下具體使用方法吧2023-08-08
Go語(yǔ)言單元測(cè)試的實(shí)現(xiàn)及用例
在日常開發(fā)中,我們通常需要針對(duì)現(xiàn)有的功能進(jìn)行單元測(cè)試,以驗(yàn)證開發(fā)的正確性,本文主要介紹了Go語(yǔ)言單元測(cè)試的實(shí)現(xiàn)及用例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
淺談Go連接池的設(shè)計(jì)與實(shí)現(xiàn)
本文主要介紹了淺談Go連接池的設(shè)計(jì)與實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Golang?Gin框架獲取請(qǐng)求參數(shù)的幾種常見方式
在我們平常添加路由處理函數(shù)之后,就可以在路由處理函數(shù)中編寫業(yè)務(wù)處理代碼了,但在此之前我們往往需要獲取請(qǐng)求參數(shù),本文就詳細(xì)的講解下gin獲取請(qǐng)求參數(shù)常見的幾種方式,需要的朋友可以參考下2024-02-02
Golang 實(shí)現(xiàn)插入排序的方法示例(2種)
這篇文章主要介紹了Golang 實(shí)現(xiàn)插入排序的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

