主頁(yè) > 知識(shí)庫(kù) > Golang中channel使用的一些小技巧

Golang中channel使用的一些小技巧

熱門(mén)標(biāo)簽:百度地圖標(biāo)注搜索關(guān)鍵詞 電梯外呼訪客系統(tǒng) ?兓? 騰訊外呼系統(tǒng)價(jià)格 電銷機(jī)器人可以補(bǔ)救房產(chǎn)中介嗎 成都呼叫中心外呼系統(tǒng)平臺(tái) 最短的地圖標(biāo)注 谷歌便利店地圖標(biāo)注 浙江人工智能外呼管理系統(tǒng)

關(guān)閉2次

復(fù)制代碼 代碼如下:

ch := make(chan bool)
close(ch)
close(ch)  // 這樣會(huì)panic的,channel不能close兩次

讀取的時(shí)候channel提前關(guān)閉了
復(fù)制代碼 代碼如下:

ch := make(chan string)
close(ch)
i := - ch // 不會(huì)panic, i讀取到的值是空 "",  如果channel是bool的,那么讀取到的是false

向已經(jīng)關(guān)閉的channel寫(xiě)數(shù)據(jù)
復(fù)制代碼 代碼如下:

ch := make(chan string)
close(ch)
ch - "good" // 會(huì)panic的

判斷channel是否close
復(fù)制代碼 代碼如下:

i, ok := - ch
if ok {
    println(i)
} else {
    println("channel closed")
}

for循環(huán)讀取channel
復(fù)制代碼 代碼如下:

for i := range ch { // ch關(guān)閉時(shí),for循環(huán)會(huì)自動(dòng)結(jié)束
    println(i)
}

防止讀取超時(shí)
復(fù)制代碼 代碼如下:

select {
    case - time.After(time.Second*2):
        println("read channel timeout")
    case i := - ch:
        println(i)
}

防止寫(xiě)入超時(shí)
復(fù)制代碼 代碼如下:

// 其實(shí)和讀取超時(shí)很像
select {
    case - time.After(time.Second *2):
        println("write channel timeout")
    case ch - "hello":
        println("write ok")
}

您可能感興趣的文章:
  • 基于golang channel實(shí)現(xiàn)的輕量級(jí)異步任務(wù)分發(fā)器示例代碼
  • golang中for循環(huán)遍歷channel時(shí)需要注意的問(wèn)題詳解
  • golang實(shí)現(xiàn)基于channel的通用連接池詳解
  • Golang優(yōu)雅關(guān)閉channel的方法示例
  • golang中單向channel的語(yǔ)法介紹
  • golang判斷chan channel是否關(guān)閉的方法
  • Golang中channel的原理解讀(推薦)

標(biāo)簽:盤(pán)錦 眉山 上海 邢臺(tái) 七臺(tái)河 紹興 雅安 宜昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang中channel使用的一些小技巧》,本文關(guān)鍵詞  Golang,中,channel,使,用的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang中channel使用的一些小技巧》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Golang中channel使用的一些小技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章