ホームページ  >  記事  >  バックエンド開発  >  golang 関数のエラー処理での依存関係の挿入

golang 関数のエラー処理での依存関係の挿入

WBOY
WBOYオリジナル
2024-05-01 12:06:02726ブラウズ

Go の関数エラー処理での依存関係の挿入により、より柔軟でテスト可能なエラー処理を実現できます。 1. コンテキストとカスタム エラー タイプを作成します。 2. コンテキストからエラーを取得して処理します。 3. 実際の戦闘でコンテキストとカスタム エラー処理データベース操作を使用します。

golang 関数のエラー処理での依存関係の挿入

Go 言語関数のエラー処理における依存性注入

依存性注入は、依存関係 (通常は外部サービスまたはモジュール) を可能にする設計パターンです。 ) は、関数内でこれらの依存関係をハードコーディングするのではなく、関数に渡されます。このアプローチは、より柔軟でテスト可能なコードを可能にするため、エラー処理に特に役立ちます。

Go 言語では、依存関係の注入に [context.Context](https://godoc.org/context#Context) タイプを使用できます。 context.Context リクエスト関連の情報を関数パラメータとして明示的に渡さずに簡単に渡すメカニズムを提供します。

実装

依存関係の注入を実装するには、context.Context とその error タイプを作成します:

package main

import (
    "context"
    "errors"
)

type myError struct {
    message string
}

func (e myError) Error() string {
    return e.message
}

var (
    ErrMyError1 = myError{"my error 1"}
    ErrMyError2 = myError{"my error 2"}
)

func main() {
    ctx := context.Background()
    err := handleError(ctx)
    if err != nil {
        // 处理错误
    }
}

次に、handleError 関数で、Context からエラーを取得して処理します。

func handleError(ctx context.Context) error {
    err := ctx.Err()
    if err != nil {
        // 处理错误
    }
    return nil
}

実用的なケース

データベースからデータを取得する必要がある関数では、依存関係注入を使用してエラーを処理できます。

func getFromDB(ctx context.Context) ([]byte, error) {
    // 处理错误
}

getFromDB 関数を呼び出すときは、context.WithValue## を使用します。 # エラー タイプを設定します:

ctx := context.Background()
ctxWithError := context.WithValue(ctx, myErrorKey, ErrMyError1)
data, err := getFromDB(ctxWithError)

getFromDB 関数では、コンテキストから特定のエラーを取得できます:

func getFromDB(ctx context.Context) ([]byte, error) {
    err := ctx.Err()
    if err != ErrMyError1 {
        // 处理其他错误
    }

    // 处理 ErrMyError1
}

このメソッドは次のようになります。エラー処理コード より柔軟でテストしやすくなりました。これにより、実行時に特定のエラーを挿入でき、特定のエラーの種類に基づいてさまざまなアクションを簡単に実行できます。

以上がgolang 関数のエラー処理での依存関係の挿入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。