チャネルを使用したゴルーチンでのエラーの処理
Go では、関数は多くの場合値とエラーを返すため、関数内の潜在的なエラーを処理できます。コード。 goroutine で関数を実行し、チャネル経由でデータを渡す場合、エラーを効果的に処理する方法が問題になります。
一般的なアプローチの 1 つは、結果をバンドルするカスタム構造体を作成することです。この構造体にはメッセージとエラー フィールドの両方を含めることができ、単一のチャネルで両方の情報を返すことができます。
type Result struct { Message string Error error } ch := make(chan Result)
ゴルーチンで、適切なメッセージとエラーを含む Result 構造体を作成できます。価値観。次に、チャネル経由で構造体を送信します。
func createHashedPasswordAsync(password string, ch chan Result) { // Code to create hashed password result := Result{ Message: "Hash created", } if err != nil { result.Error = err } ch <- result }
メインのゴルーチンでは、Result 構造体を受け取り、それに応じてメッセージとエラーを処理できます。
result := <-ch if result.Error != nil { // Handle error } else { // Do something with the message }
カスタム メソッドを使用することで、 struct を使用して結果をバンドルすると、ゴルーチンでエラーを効果的に処理し、メッセージとエラーの両方を単一のチャネルで渡すことができます。
以上がチャネルを使用したゴルーチンのエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。