チャネルを使用したゴルーチンでのエラーの受け渡し
提供された createHashedPassword 関数で示されているように、Go では通常、関数は値とオプションのエラーを返します。 。 goroutine でこの関数を実行する場合、一般的なアプローチは、チャネルを通じて結果を通信することです。ただし、このセットアップ内でのエラーの処理には特別な考慮が必要です。
ゴルーチンのエラーを効果的に処理するには、潜在的なエラーを含む出力値をカスタム構造体にカプセル化することをお勧めします。この構造体を単一のチャネルで渡すことにより、結果と関連するエラーの両方を簡単に返すことができます。
たとえば、予期される出力のメッセージと、発生した出力のエラーという 2 つのフィールドを持つ Result 構造体を作成できます。エラー:
type Result struct { Message string Error error }
次に、特に Result 構造体を送信するためのチャネルを初期化します:
ch := make(chan Result)
次に、ゴルーチン内で、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 }
以上がチャネル使用時にゴルーチンのエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。