透過通道處理 Goroutine 中的錯誤
在 Goroutine 中呼叫函數時,經常需要處理和傳播錯誤。在 Go 中,函數通常會傳回一個值和一個錯誤,如範例所示:
func createHashedPassword(password string) (string, error) { // code }
要在 Goroutine 中執行 createHashedPassword 並促進錯誤處理,常見的方法是使用通道。通道允許雙向通信,從而能夠發送和接收資料。
要使用通道處理錯誤,可以定義自訂結構來封裝結果和錯誤:
type Result struct { Message string Error error } ch := make(chan Result)
在 goroutine 中,可以填充 Result結構並透過通道發送:
go func() { msg, err := createHashedPassword(password) result := Result{Message: msg, Error: err} ch <- result }()
在主程式中,結果可以從通道中獲取並檢查錯誤:
result := <-ch if result.Error != nil { // Error occurred }
透過利用這種技術,可以在goroutine 內有效處理錯誤,允許錯誤傳播和錯誤處理,而不會影響並發性。
以上是如何使用 Go 中的通道處理來自 Goroutine 的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!