0514-86177077
9:00-17:00(工作日)
實現原理:
并發一個函數,等待1s后向timeout寫入數據,在select中如果1s之內有數據向其他channel寫入則會順利執行,如果沒有,這是timeout寫入了數據,則我們知道超時了。
select
channel
timeout
實現代碼:
package main import "fmt" import "time" func main() { ch := make(chan int, 1) timeout := make(chan bool, 1) // 并發執行一個函數,等待1s后向timeout寫入true go func() { time.Sleep(1000) timeout - true }() // 這里會等待ch或timeout讀出數據 // 因為一直沒有向ch寫入數據 // 在1s后向timeout寫入了數據 // 所以執行了timeout的case // 利用這個技巧可以實現超時操作 select { case - ch : fmt.Println("read from ch") case - timeout : fmt.Println("time out...") } }
總結
以上就是這篇文章的全部內容,希望對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。
標簽:七臺河 眉山 上海 宜昌 紹興 盤錦 雅安 邢臺
上一篇:淺析Go語言中的Range關鍵字
下一篇:利用Go語言實現簡單Ping過程的方法
Copyright ? 1999-2012 誠信 合法 規范的巨人網絡通訊始建于2005年
蘇ICP備15040257號-8