使用通道在Goroutine 中傳遞錯誤
在Go 中,函數通常會傳回一個值和一個可選錯誤,如提供的createHashedPassword函數中所示。在 Goroutine 中執行此函數時,常見的方法是透過通道傳達結果。但是,在此設定中處理錯誤需要特殊考慮。
為了有效處理 Goroutine 中的錯誤,建議將輸出值(包括潛在錯誤)封裝到自訂結構中。透過透過單一通道傳遞此結構,您可以輕鬆傳回結果和任何關聯的錯誤。
例如,您可以建立一個包含兩個欄位的Result 結構:預期輸出的訊息和遇到的任何錯誤錯誤:
type Result struct { Message string Error error }
接下來,初始化一個專門用於傳輸Result 結構的通道:
ch := make(chan Result)
現在,在您的goroutine 中,執行createHashedPassword 函數並將結果指派給Result 變數:
go func() { result := Result{ Message: createHashedPassword(), Error: err, // Any potential error encountered during execution } ch <- result }()
在接收端,您可以擷取結果並檢查是否有錯誤:
select { case result := <-ch: if result.Error != nil { // Handle the error } // Do something with result.Message }
以上是使用 Channel 時 Goroutine 出現錯誤如何處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!