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

淺析Golang如何向已關(guān)閉的chan讀寫(xiě)數(shù)據(jù)

 更新時(shí)間:2024年02月04日 14:36:28   作者:夢(mèng)_魚(yú)  
這篇文章主要為大家詳細(xì)介紹了Golang如何向已關(guān)閉的chan讀寫(xiě)數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1. 向已關(guān)閉的chan寫(xiě)

會(huì)直接panic,報(bào) send to close channel錯(cuò)誤

package main

func main() {
	// 創(chuàng)建緩沖區(qū)為4的字符串chan
	schoolChan := make(chan string, 4)
	// 放入3個(gè)值
	schoolChan <- "國(guó)防科大"
	schoolChan <- "北京大學(xué)"
	schoolChan <- "湖南大學(xué)"

	// 關(guān)閉chan
	close(schoolChan)

	// 嘗試寫(xiě)數(shù)據(jù),會(huì)panic: send to close channel
	schoolChan <- "中南大學(xué)"
}

2. 向已關(guān)閉的chan讀

會(huì)返回2個(gè)值,若已關(guān)閉的chan中還存在值,第二個(gè)值為true,第一個(gè)值為對(duì)應(yīng)的chan中的值,若已關(guān)閉的chan中不存在值,第二個(gè)值為false,第一個(gè)值為對(duì)應(yīng)chan類(lèi)型的零值

package main

import "fmt"

func main() {
	// 創(chuàng)建緩沖區(qū)為4的字符串chan
	schoolChan := make(chan string, 4)
	// 放入3個(gè)值
	schoolChan <- "國(guó)防科大"
	schoolChan <- "北京大學(xué)"
	schoolChan <- "湖南大學(xué)"

	// 關(guān)閉chan
	close(schoolChan)

	// 向已關(guān)閉的chan讀
	if school, isEmpty := <-schoolChan; isEmpty {
		fmt.Println("school:", school)
	}

	// 向已關(guān)閉的chan讀
	if school, isEmpty := <-schoolChan; isEmpty {
		fmt.Println("school:", school)
	}

	// 向已關(guān)閉的chan讀
	if school, isEmpty := <-schoolChan; isEmpty {
		fmt.Println("school:", school)
	}

	// 向若chan不存在元素,則第二個(gè)參數(shù)的值為 false
	if school, isEmpty := <-schoolChan; isEmpty {
		fmt.Println("school:", school)
	}
}

使用for循環(huán)遍歷chan,若chan未關(guān)閉則會(huì)堵塞等待chan放入元素,如chan關(guān)閉則取出chan內(nèi)所有元素并終止循序

package main

import (
	"fmt"
)

func main() {
	// 創(chuàng)建緩沖區(qū)為4的字符串chan
	schoolChan := make(chan string, 4)
	// 放入3個(gè)值
	schoolChan <- "國(guó)防科大"
	schoolChan <- "北京大學(xué)"
	schoolChan <- "湖南大學(xué)"

	// 關(guān)閉chan
	close(schoolChan)

	// for循環(huán)遍歷channel,會(huì)將已關(guān)閉的chan中緩沖區(qū)的數(shù)據(jù)取出完后終止循序
	for school := range schoolChan {
		fmt.Println("school:", school)
	}
}

到此這篇關(guān)于淺析Golang如何向已關(guān)閉的chan讀寫(xiě)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Go向已關(guān)閉chan讀寫(xiě)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang編譯器介紹

    Golang編譯器介紹

    今天小編就為大家分享一篇關(guān)于go語(yǔ)言編譯器的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-09-09
  • Go語(yǔ)言常用字符串處理方法實(shí)例匯總

    Go語(yǔ)言常用字符串處理方法實(shí)例匯總

    這篇文章主要介紹了Go語(yǔ)言常用字符串處理方法,實(shí)例匯總了Go語(yǔ)言中常見(jiàn)的各種字符串處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Go 語(yǔ)言中 20 個(gè)占位符的整理

    Go 語(yǔ)言中 20 個(gè)占位符的整理

    這篇文章主要介紹了Go 語(yǔ)言中 20 個(gè)占位符的整理,看完本篇文章講學(xué)會(huì)什么是占位符?哪些函數(shù)支持?如何使用占位符?不同的占位符的作用?配合占位符的幾個(gè)標(biāo)記符號(hào)用法?
    2021-10-10
  • 使用Golang如何實(shí)現(xiàn)簡(jiǎn)易的令牌桶算法

    使用Golang如何實(shí)現(xiàn)簡(jiǎn)易的令牌桶算法

    這篇文章主要介紹了使用Golang如何實(shí)現(xiàn)簡(jiǎn)易的令牌桶算法問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • golang中獲取變量類(lèi)型的方法總結(jié)

    golang中獲取變量類(lèi)型的方法總結(jié)

    golang中是沒(méi)有提供內(nèi)置函數(shù)來(lái)獲取變量的類(lèi)型的,但是通過(guò)一定的方式也可以獲取,下面主要給大家介紹了幾個(gè)golang獲取變量類(lèi)型的幾種方式,需要的朋友可以參考下
    2025-03-03
  • Go中時(shí)間與時(shí)區(qū)問(wèn)題的深入講解

    Go中時(shí)間與時(shí)區(qū)問(wèn)題的深入講解

    go語(yǔ)言中如果不設(shè)置指定的時(shí)區(qū),通過(guò)time.Now()獲取到的就是本地時(shí)區(qū),下面這篇文章主要給大家介紹了關(guān)于Go中時(shí)間與時(shí)區(qū)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Golang?reflect反射的使用實(shí)例

    Golang?reflect反射的使用實(shí)例

    Golang反射的錯(cuò)誤大多數(shù)都來(lái)自于調(diào)用了一個(gè)不適合當(dāng)前類(lèi)型的方法,而且,這些錯(cuò)誤通常是在運(yùn)行時(shí)才會(huì)暴露出來(lái),而不是在編譯時(shí),如果我們傳遞的類(lèi)型在反射代碼中沒(méi)有被覆蓋到那么很容易就會(huì)panic,本文就介紹一下使用go反射時(shí)很大概率會(huì)出現(xiàn)的錯(cuò)誤,需要的可以參考一下
    2023-04-04
  • golang實(shí)現(xiàn)數(shù)組分割的示例代碼

    golang實(shí)現(xiàn)數(shù)組分割的示例代碼

    本文主要介紹了golang實(shí)現(xiàn)數(shù)組分割的示例代碼,要求把數(shù)組分割成多個(gè)正整數(shù)大小的數(shù)組,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文帶你感受Go語(yǔ)言空結(jié)構(gòu)體的魔力

    一文帶你感受Go語(yǔ)言空結(jié)構(gòu)體的魔力

    在?Go?語(yǔ)言中,有一種特殊的用法可能讓許多人感到困惑,那就是空結(jié)構(gòu)體,本文將對(duì)Go空結(jié)構(gòu)體進(jìn)行詳解,準(zhǔn)備一杯你最喜歡的飲料或茶,隨著本文一探究竟吧
    2023-05-05
  • 詳解如何在Go服務(wù)中做鏈路追蹤

    詳解如何在Go服務(wù)中做鏈路追蹤

    使用 Go 語(yǔ)言開(kāi)發(fā)微服務(wù)的時(shí)候,需要追蹤每一個(gè)請(qǐng)求的訪問(wèn)鏈路,本文主要介紹了如何在Go 服務(wù)中做鏈路追蹤,感興趣的可以了解一下
    2021-09-09

最新評(píng)論