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

Golang channel關閉的實現示例

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

使用內置函數close可以關閉channel,當channel關閉后,就不能再向channel寫數據了,但是仍然可以從channel中讀取數據。

一旦將channel關閉了,只能讀不能寫。相當于關閉管道就數據不能進入到隊列里面了,只能進行讀操作,只讀不寫。

channel支持for-range的方式進行遍歷,請注意兩個細節(jié)

(1)在遍歷時,如果channel沒有關閉,則回出現deadlock的錯誤

(2)在遍歷時,如果channel已經關閉,則會正常遍歷數據,遍歷完后,就會退出遍歷。

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

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

	//當管道關閉之后,讀取數據是沒有問題的
	num := <-intChan
	fmt.Println(num)

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

	//向管道寫入數據
	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

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

相關文章

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

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

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

    Golang易錯知識點匯總

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

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

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

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

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

    golang?四則運算計算器yacc歸約手寫實現

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

    Go高級特性探究之對象比較詳解

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

    Golang實現微信公眾號后臺接入的示例代碼

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

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

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

    Go語言對JSON進行編碼和解碼的方法

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

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

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

最新評論