400-1100-266
9:00-24:00(工作日)
實(shí)現(xiàn)原理:
并發(fā)一個(gè)函數(shù),等待1s后向timeout寫入數(shù)據(jù),在select中如果1s之內(nèi)有數(shù)據(jù)向其他channel寫入則會(huì)順利執(zhí)行,如果沒有,這是timeout寫入了數(shù)據(jù),則我們知道超時(shí)了。
select
channel
timeout
實(shí)現(xiàn)代碼:
package main import "fmt" import "time" func main() { ch := make(chan int, 1) timeout := make(chan bool, 1) // 并發(fā)執(zhí)行一個(gè)函數(shù),等待1s后向timeout寫入true go func() { time.Sleep(1000) timeout - true }() // 這里會(huì)等待ch或timeout讀出數(shù)據(jù) // 因?yàn)橐恢睕]有向ch寫入數(shù)據(jù) // 在1s后向timeout寫入了數(shù)據(jù) // 所以執(zhí)行了timeout的case // 利用這個(gè)技巧可以實(shí)現(xiàn)超時(shí)操作 select { case - ch : fmt.Println("read from ch") case - timeout : fmt.Println("time out...") } }
總結(jié)
以上就是這篇文章的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
標(biāo)簽:衡水 崇左 黃山 銅川 仙桃 蘭州 湖南 湘潭
上一篇:淺析Go語言中的Range關(guān)鍵字
下一篇:利用Go語言實(shí)現(xiàn)簡單Ping過程的方法
Copyright ? 1999-2012 誠信 合法 規(guī)范的巨人網(wǎng)絡(luò) kiddlux.com 始建于2005年
全國網(wǎng)站建設(shè)網(wǎng)站開發(fā)咨詢熱線:400-1100-266?? 0514-86177077
江蘇揚(yáng)州巨人網(wǎng)絡(luò)科技有限公司 ??總部地址:江蘇省揚(yáng)州信息產(chǎn)業(yè)基地11號(hào)樓4層
《增值電信業(yè)務(wù)經(jīng)營許可證》蘇B2-20120278 ?? 蘇ICP備15040257號(hào) 網(wǎng)站地圖