最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang?channel關(guān)閉后是否可以讀取剩余的數(shù)據(jù)詳解

 更新時間:2023年09月13日 09:46:57   作者:翔云123456  
這篇文章主要介紹了Golang?channel關(guān)閉后是否可以讀取剩余的數(shù)據(jù),文章通過一個測試?yán)咏o大家詳細(xì)的介紹了是否可以讀取剩余的數(shù)據(jù),需要的朋友可以參考下

golang channel關(guān)閉后,其中剩余的數(shù)據(jù),是可以繼續(xù)讀取的。

請看下面的測試?yán)印?/p>

創(chuàng)建一個帶有緩沖的channel,向channel中發(fā)送數(shù)據(jù),然后關(guān)閉channel,最后,從channel中讀取數(shù)據(jù),輸出結(jié)果。

package main
import (
        "fmt"
)
func main(){
        ch := make(chan int, 3)
        ch <-1
        ch <-2
        ch <-3
        close(ch)
        for value := range ch {
                fmt.Println("value:", value)
        }
}

output:

value: 1
value: 2
value: 3

可以看到,channel關(guān)閉之后,仍然可以從channel中讀取剩余的數(shù)據(jù),直到數(shù)據(jù)全部讀取完成。

多說一點,對于一個關(guān)閉的channel,如果繼續(xù)向channel發(fā)送數(shù)據(jù),會引起panic。

如果繼續(xù)讀數(shù)據(jù),得到的是零值(對于int,就是0)。

判斷一個channel的方式有兩種:
一種方式:

value, ok := <- ch

ok是false,就表示已經(jīng)關(guān)閉。

另一種方式,就是上面例子中使用的方式:

for value := range ch {
}

如果channel被關(guān)閉,會跳出循環(huán)。

另外,如果channel被關(guān)閉后,不能再寫入,寫入會導(dǎo)致panic。但可以一直讀取,讀取到的值是類型的零值:

for i:=0;i<10;i++ {
        value := <- ch
        fmt.Println("value:", value)
}

value: 1
value: 2
value: 3
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0

到此這篇關(guān)于Golang channel關(guān)閉后是否可以讀取剩余的數(shù)據(jù)詳解的文章就介紹到這了,更多相關(guān)Golang channel關(guān)閉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用rpm打包上線部署golang代碼的方法教程

    利用rpm打包上線部署golang代碼的方法教程

    RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這篇文章主要給大家介紹了關(guān)于利用rpm打包上線部署golang代碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Go語言中雙Token登錄系統(tǒng)的思路與實現(xiàn)詳解

    Go語言中雙Token登錄系統(tǒng)的思路與實現(xiàn)詳解

    在現(xiàn)代Web應(yīng)用中,身份認(rèn)證是保障系統(tǒng)安全的重要環(huán)節(jié),本文將介紹如何使用Go語言實現(xiàn)雙Token登錄系統(tǒng),文中的示例代碼講解詳細(xì),需要的可以了解下
    2025-07-07
  • go語言VScode?see?'go?help?modules'?(exit?status?1)問題的解決過程

    go語言VScode?see?'go?help?modules'?(exit?statu

    最近上手學(xué)習(xí)go語言,準(zhǔn)備在VSCode上寫程序的時候卻發(fā)現(xiàn)出了一點問題,下面這篇文章主要給大家介紹了關(guān)于go語言VScode?see?'go?help?modules'(exit?status?1)問題的解決過程,需要的朋友可以參考下
    2022-07-07
  • Golang拾遺之自定義類型和方法集詳解

    Golang拾遺之自定義類型和方法集詳解

    golang拾遺主要是用來記錄一些遺忘了的、平時從沒注意過的golang相關(guān)知識。這篇文章主要整理了一下Golang如何自定義類型和方法集,需要的可以參考一下
    2023-02-02
  • Go高級特性探究之穩(wěn)定排序詳解

    Go高級特性探究之穩(wěn)定排序詳解

    Go 語言提供了 sort 包,其中最常用的一種是 sort.Slice() 函數(shù),本篇文章將為大家介紹如何使用 sort.SliceStable() 對結(jié)構(gòu)體數(shù)組的某個字段進(jìn)行穩(wěn)定排序,感興趣的可以了解一下
    2023-06-06
  • Golang字符串的拼接方法匯總

    Golang字符串的拼接方法匯總

    字符串拼接在日常開發(fā)中是很常見的需求,今天我們來探討下如何用golang來實現(xiàn)字符串的拼接
    2018-10-10
  • Go語言中的閉包詳解

    Go語言中的閉包詳解

    本文詳細(xì)講解了Go語言中的閉包,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • golang通過遞歸遍歷生成樹狀結(jié)構(gòu)的操作

    golang通過遞歸遍歷生成樹狀結(jié)構(gòu)的操作

    這篇文章主要介紹了golang通過遞歸遍歷生成樹狀結(jié)構(gòu)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang sync.Map原理深入分析講解

    Golang sync.Map原理深入分析講解

    go中map數(shù)據(jù)結(jié)構(gòu)不是線程安全的,即多個goroutine同時操作一個map,則會報錯,因此go1.9之后誕生了sync.Map,sync.Map思路來自java的ConcurrentHashMap
    2022-12-12
  • 一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸出函數(shù)的使用

    一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸出函數(shù)的使用

    這篇文章主要為大家詳細(xì)介紹了Go語言中 fmt 標(biāo)準(zhǔn)庫輸出函數(shù)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12

最新評論

滕州市| 罗平县| 靖宇县| 楚雄市| 宽城| 泰安市| 壤塘县| 长宁县| 武隆县| 麟游县| 龙山县| 五台县| 故城县| 泰州市| 迁西县| 攀枝花市| 平江县| 潜山县| 花莲市| 宁河县| 蓬安县| 东宁县| 仁布县| 九江县| 三门县| 武山县| 苏尼特右旗| 林口县| 云安县| 清原| 南汇区| 百色市| 扎赉特旗| 盐池县| 新晃| 江华| 辽源市| 濮阳市| 博白县| 嘉峪关市| 根河市|