国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 湖州市| 新野县| 沛县| 揭西县| 海丰县| 绥中县| 农安县| 天气| 武汉市| 昂仁县| 金山区| 通渭县| 霍城县| 松江区| 页游| 嘉义市| 绵竹市| 贵州省| 仙游县| 湾仔区| 西昌市| 汤原县| 德昌县| 龙里县| 大兴区| 乌鲁木齐市| 阳泉市| 贵阳市| 广昌县| 天门市| 大英县| 广元市| 沁源县| 宜宾市| 德格县| 唐河县| 新竹县| 五家渠市| 山丹县| 穆棱市| 福建省|