ジェネリクスは Golang のエラー処理に新たな可能性をもたらし、複数の種類のエラーを処理する一般的なエラー処理関数の作成を可能にします。これらの関数は、カスタム エラー タイプと汎用検証関数を使用して実装でき、入力を検証して検証結果を返すために使用できます。汎用エラー処理関数を使用すると、コードが簡素化され、保守性が向上します。
関数エラー処理に対する Golang ジェネリックの影響
はじめに
Golangの新しいジェネリック機能は、エラー処理に新しい可能性をもたらします。ジェネリックを使用すると、多くの種類のエラーを処理できる汎用エラー処理関数を作成できます。
汎用エラー処理関数
汎用エラー処理関数を作成するには、次の構文を使用できます。
func HandleError[T error](err T) {}
たとえば、次のように作成できます。 a print エラー説明用の汎用関数:
func PrintError[T error](err T) { fmt.Println(err.Error()) }
汎用エラー処理関数の使用
汎用エラー処理関数は、通常の関数と同じように使用できます。たとえば、PrintError
関数を別の関数に渡してエラーを処理できます。
func SomeFunction() error { return errors.New("some error") } func main() { err := SomeFunction() PrintError(err) // prints "some error" }
実践例: 入力の検証
見てみましょう実際のケースでは、一般的なエラー処理関数を使用して入力を検証する方法を示します。
カスタム エラー タイプ
まず、入力検証エラーを表すカスタム エラー タイプを作成する必要があります:
type ValidationErrors struct { Errors []error } func (e *ValidationErrors) Error() string { return "Input validation failed" }
汎用検証関数
次に、入力を検証する汎用関数を作成できます。
func ValidateInput[T any](input T) (*T, *ValidationErrors) { errors := &ValidationErrors{} // 验证输入并填充 errors.Errors if len(errors.Errors) > 0 { return nil, errors } return &input, nil }
汎用検証関数の使用
最後に、次のことができます。 ValidateInput
関数を使用してユーザー入力を検証します。
func GetUserInput() { var input string fmt.Println("Enter input:") fmt.Scanln(&input) result, errors := ValidateInput(input) if errors != nil { PrintError(errors) // prints "Input validation failed" } else { fmt.Println("Valid input:", *result) } }
結論
Golang のジェネリックスは、エラー処理のための強力な機能を提供し、一般エラーを作成できるようにします。ハンドリング機能。これにより、コードがクリーンになり、保守が容易になります。
以上がGolang ジェネリックは関数エラー処理にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。