国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Golang中channel使用的一些小技巧

2020-04-01 19:13:52
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Golang中channel使用的一些小技巧,本文講解了關(guān)閉2次、讀取的時(shí)候channel提前關(guān)閉了、向已經(jīng)關(guān)閉的channel寫數(shù)據(jù)等技巧及這實(shí)例代碼,需要的朋友可以參考下
 

關(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寫數(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) 

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西吉县| 海南省| 澄江县| 沂源县| 微博| 沙雅县| 栾城县| 蛟河市| 册亨县| 会理县| 浦北县| 岚皋县| 额尔古纳市| 加查县| 大渡口区| 阜宁县| 扎兰屯市| 兴国县| 沽源县| 县级市| 通城县| 台湾省| 太仆寺旗| 咸宁市| 宁海县| 常州市| 广丰县| 蒲城县| 井研县| 灌云县| 资中县| 香格里拉县| 威海市| 五大连池市| 泗洪县| 炉霍县| 扬州市| 桐梓县| 逊克县| 永仁县| 桃园市|