golang在goroutine裡的錯誤怎麼傳遞?
首先 goroutine 真的很爽。。。 場景是這樣的,就是要把 goroutine 裡的錯誤訊息傳遞出來,簡單的程式碼示例:
func work(some string, ch chan string){
// do something
err:=dosomething()
for{
select{
case <-ch:
// do something
err:=doOthersome()
}
}
}
func main(){
go work(some, ch)
// 在這裡如何得到work函式裡的err
}
我現在用的是在 main 函式裡定義一個 chan error,傳遞給 work,然後在 work 裡有 err 的時候,給這個 chan error 發訊息,在 main 函式裡接收,但這樣如果沒有 err,會導致 main 函式阻塞。
func work(some string, ch chan string, chanErr chan error){
// do something
err:=dosomething()
if err!=nil{
chanErr<-err
return
}
for{
select{
case <-ch:
// do something
err:=doOthersome()
if err!=nil{
chanErr<-err
return
}
}
}
}
func main(){
chanErr:=make(chan error)
go work(some, ch, chanErr)
// 在這裡接收work函式裡的err, 沒有任何錯誤的話會阻塞
err:=<-chanErr
}
來請教大家,有沒有更好的方法?不讓 main 函式阻塞
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- context裡的超時時間是怎麼在微服務之間傳遞的Context微服務
- 【Golang】golang中那些不需要傳遞引數就能使用的變數是怎麼回事Golang變數
- 怎樣向自定義標籤裡傳遞用Controller裡的assign()傳遞到頁面上的值Controller
- 關於golang的goroutine schedulerGolang
- golang工作筆記(二)值傳遞與引用傳遞Golang筆記
- golang如何結束goroutineGolang
- 如何優雅的在Golang中進行錯誤處理Golang
- Golang 的 goroutine 是如何實現的?Golang
- dns錯誤怎麼辦 dns錯誤的解決辦法DNS
- Python怎麼傳遞不定引數Python
- golang 方法作為引數傳遞Golang
- ng-template 使用過程中引數傳遞錯誤的單步除錯除錯
- Golang中函式傳參存在引用傳遞嗎?Golang函式
- mock在vue裡怎麼用MockVue
- 第 12 期 golang 中 goroutine 的排程Golang
- Golang —— goroutine(協程)和channel(管道)Golang
- Golang 獲取 goroutine id 完全指南Golang
- Golang1.7 Goroutine原始碼分析Golang原始碼
- php7中的curl檔案上傳出現錯誤該怎麼辦PHP
- HTTP代理錯誤怎麼解決?HTTP
- Go 之基礎速學 (五) golang 裡函式以及函式之間引數的傳遞Golang函式
- 說說不知道的Golang中引數傳遞Golang
- 安裝golang tour,提示錯誤Golang
- GOLANG錯誤處理最佳方案Golang
- 面試: 怎麼往 Generator 裡拋個錯?面試
- steam磁碟寫入錯誤怎麼解決 steam安裝時發生錯誤怎麼辦
- 糟糕,在錯誤的分支開發了新功能,該怎麼處理呢?
- Golang語言並行設計的核心goroutineGolang並行
- 【GoLang】GoLang 錯誤處理 -- 官方推薦方式 示例Golang
- Golang 入門 : 等待 goroutine 完成任務Golang
- 「Golang成長之路」併發之GoroutineGolang
- GOLANG使用Context管理關聯goroutineGolangContext
- win10 關閉自動傳送錯誤報告方法 windows10錯誤報告怎麼關閉Win10Windows
- 印表機提示列印錯誤怎麼解決 印表機狀態錯誤的方法
- 網頁證書錯誤怎麼回事 證書錯誤的解決辦法網頁
- Windows 10傳遞最佳化功能有什麼用 Windows 10傳遞最佳化功能怎麼關閉Windows
- asp.net 在webconfig裡自定義錯誤頁ASP.NETWeb
- Golang開發常見的57個錯誤Golang