欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang channel關(guān)閉的實(shí)現(xiàn)示例

 更新時(shí)間:2024年01月11日 11:27:05   作者:富士康質(zhì)檢員張全蛋  
channel關(guān)閉不當(dāng)或不關(guān)閉會(huì)引發(fā)很多問題,本文主要介紹了Golang channel關(guān)閉的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下

使用內(nèi)置函數(shù)close可以關(guān)閉channel,當(dāng)channel關(guān)閉后,就不能再向channel寫數(shù)據(jù)了,但是仍然可以從channel中讀取數(shù)據(jù)。

一旦將channel關(guān)閉了,只能讀不能寫。相當(dāng)于關(guān)閉管道就數(shù)據(jù)不能進(jìn)入到隊(duì)列里面了,只能進(jìn)行讀操作,只讀不寫。

channel支持for-range的方式進(jìn)行遍歷,請(qǐng)注意兩個(gè)細(xì)節(jié)

(1)在遍歷時(shí),如果channel沒有關(guān)閉,則回出現(xiàn)deadlock的錯(cuò)誤

(2)在遍歷時(shí),如果channel已經(jīng)關(guān)閉,則會(huì)正常遍歷數(shù)據(jù),遍歷完后,就會(huì)退出遍歷。

下面這種遍歷方式肯定是錯(cuò)誤的,每次取出來數(shù)據(jù)長度都會(huì)減1,容量方式也一樣不是真實(shí)的長度,所以只能使用for rang方式。 

func main() {
	intChan := make(chan int, 3)
	intChan <- 100
	intChan <- 200
	close(intChan) //關(guān)閉管道

	//當(dāng)管道關(guān)閉之后,讀取數(shù)據(jù)是沒有問題的
	num := <-intChan
	fmt.Println(num)

	//從管道里面依次取出這樣的值,管道是先進(jìn)先出的隊(duì)列,值也是按照順序取出來的
	for v := range intChan {
		fmt.Println(v)
	}
}
func main() {
	intChan := make(chan int, 3)

	//向管道寫入數(shù)據(jù)
	intChan <- 1
	num := 2
	intChan <- num

	for i := 0; i < 1; i++ {
		v, ok := <-intChan
		fmt.Println(v, ok)
	}

	fmt.Println(".....................")
	
    close(intChan)
	for i := 0; i < 10; i++ {
		v, ok := <-intChan
		fmt.Println(v, ok)
	}

}


1 true
.....................
2 true
0 false
0 false
0 false
0 false
0 false
0 false
0 false
0 false
0 false

到此這篇關(guān)于Golang channel關(guān)閉的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Golang channel關(guān)閉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • GO語言獲取系統(tǒng)環(huán)境變量的方法

    GO語言獲取系統(tǒng)環(huán)境變量的方法

    這篇文章主要介紹了GO語言獲取系統(tǒng)環(huán)境變量的方法,實(shí)例分析了Getenv方法操作環(huán)境變量的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Golang易錯(cuò)知識(shí)點(diǎn)匯總

    Golang易錯(cuò)知識(shí)點(diǎn)匯總

    這篇文章匯總了在開發(fā)和刷面試題過程中遇到的Golang容易搞錯(cuò)的知識(shí)點(diǎn),關(guān)鍵部分也都為大家寫了代碼示例,感興趣的小伙伴可以了解一下
    2022-09-09
  • Go 日志封裝實(shí)戰(zhàn)示例詳解

    Go 日志封裝實(shí)戰(zhàn)示例詳解

    這篇文章主要為大家介紹了Go 日志封裝實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 詳解Golang 中的并發(fā)限制與超時(shí)控制

    詳解Golang 中的并發(fā)限制與超時(shí)控制

    這篇文章主要介紹了詳解Golang 中的并發(fā)限制與超時(shí)控制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • golang?四則運(yùn)算計(jì)算器yacc歸約手寫實(shí)現(xiàn)

    golang?四則運(yùn)算計(jì)算器yacc歸約手寫實(shí)現(xiàn)

    這篇文章主要為大家介紹了golang?四則運(yùn)算?計(jì)算器?yacc?歸約的手寫實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go高級(jí)特性探究之對(duì)象比較詳解

    Go高級(jí)特性探究之對(duì)象比較詳解

    在go語言中,要比較兩個(gè)對(duì)象是否完全相同,我們可以使用三種方法,這篇文章主要為大家介紹了這三種方法的具體實(shí)現(xiàn),需要的可以參考一下
    2023-06-06
  • Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼

    這篇文章主要介紹了Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 一文詳解Go語言中對(duì)象池的正確打開方式

    一文詳解Go語言中對(duì)象池的正確打開方式

    對(duì)象池是一種設(shè)計(jì)模式,它維護(hù)一組已經(jīng)創(chuàng)建好的對(duì)象,當(dāng)需要使用對(duì)象時(shí),直接從對(duì)象池中獲取,使用完畢后再放回對(duì)象池,而不是頻繁地創(chuàng)建和銷毀對(duì)象,下面我們就來看看Go語言中對(duì)象池的具體使用吧
    2025-02-02
  • Go語言對(duì)JSON進(jìn)行編碼和解碼的方法

    Go語言對(duì)JSON進(jìn)行編碼和解碼的方法

    這篇文章主要介紹了Go語言對(duì)JSON進(jìn)行編碼和解碼的方法,涉及Go語言操作json的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang中defer執(zhí)行時(shí)機(jī)的案例分析

    golang中defer執(zhí)行時(shí)機(jī)的案例分析

    這篇文章主要來通過一些案例和大家一起探討一下golang中defer的執(zhí)行時(shí)機(jī),文中的示例代碼講解詳細(xì),對(duì)我們深入了解golang有一定的幫助,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11

最新評(píng)論