並行関数でのエラー処理は非常に重要であり、Go 言語にはエラーを処理するさまざまな方法が用意されています。エラー タイプを使用してエラー メッセージを保存します。関数パラメータまたは戻り値の型を通じてエラーを渡します。 errgroup パッケージを使用して、同時関数グループのエラーを収集して処理します。カスタム エラー タイプを使用して、より具体的な情報を提供します。エラーを適切に処理することで、同時実行機能の堅牢性と信頼性が保証されます。
同時プログラミングでは、関数内のエラーによってエラーが発生する可能性があるため、エラーを正しく処理することが重要です。他の同時実行機能に影響を与えます。 Go 言語には、同時実行関数のエラーを処理する方法がいくつか用意されています。
error
型の使用error
型は、エラーを処理するために Go 言語で使用される組み込み型です。 error
変数には、エラー メッセージまたはエラーの原因を表す値が格納されます。
並行関数は、関数パラメーターまたは戻り値の型を通じてエラーを渡すことができます。例:
func doSomething() error { // 在这里执行任务 return nil // 如果没有错误,则返回 nil }
この関数は次のように呼び出すことができます:
err := doSomething() if err != nil { // 处理错误 }
errgroup
##errgroup を使用します。 # package #sync.ErrGroup
タイプ。同時実行関数グループのエラーを収集して処理するために使用されます。 次のように
を使用します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>import (
"context"
"errors"
"fmt"
"sync"
)
func main() {
var g sync.WaitGroup // 用于等待并发函数完成
g.Add(2)
ctx := context.Background()
eg := sync.ErrGroup{}
eg.Go(func() error {
defer g.Done()
return errors.New("函数 1 失败")
}, ctx)
eg.Go(func() error {
defer g.Done()
// 这里执行任务
return nil
}, ctx)
g.Wait()
// 检查是否有错误并进行处理
if err := eg.Wait(); err != nil {
fmt.Println("错误:", err)
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
カスタム エラー タイプを使用する
type MyError struct { message string } func (e *MyError) Error() string { return e.message }
次に、並行関数で
MyError を作成して返すことができます。 エラー: 以上がgolang 関数の同時実行におけるエラー処理の役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。func doSomething() error {
// 在这里执行任务
return &MyError{"函数 1 失败"}
}