ホームページ >バックエンド開発 >Golang >github.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する問題

github.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する問題

WBOY
WBOY転載
2024-02-11 11:54:08473ブラウズ

github.com/go-playground/validator/v10 包中的 required_if 组合问题

php エディター Baicao は、github.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する質問を紹介します。このパッケージをデータ検証に使用する場合、特定のフィールドの値に基づいて他のフィールドが必要かどうかを判断する必要がある場合があります。現時点では、required_if 組み合わせルールを使用して、この要件を達成できます。指定された条件に基づいてフィールドが必須かどうかを判断できるため、非常に柔軟で実用的です。この記事では、required_if 組み合わせルールを使用してこの問題を解決する方法を詳しく説明します。

質問内容

ソフトウェアパッケージのバージョンなど。 v9、v10:

パッケージ バージョン: v10

質問、問題、改善点: 以下のコードを実行しようとすると。このエラーが発生します。有線です。

######出力###### リーリー

デモまたは再現用のコード例:

リーリー コードまたは検証パッケージの問題を特定できません。ご協力をいただければ幸いです...回避策

追加

omitempty

例: リーリー 完全な例は playground にあります (インポートされたパッケージの数が大きいため、これは Playground では確実に実行されないことに注意してください)。

問題は、required_if によりライブラリが

person

//Entity が存在するかどうかをチェックするにもかかわらず、ライブラリは空の ## を検証することです。 #パーソン/エンティティ (そして失敗します!)。 omitempty を追加することは、ライブラリが空の struct を無視することを意味します。これは、required_if が必須の struct## を保証するため、望ましい結果が得られます。 (検証されることを意味します)。 もう 1 つのオプションは、ポインターを使用することです (playground): リーリー ここでの違いは、

Entity

がない場合、値は nil (デフォルト値を持つ

Entity

とは対照的に) になることです。 validator 検証できないことを意味します。 注: v := validator.New(validator.WithRequiredStructEnabled()) を使用することをお勧めします (documentation に従って)。

以上がgithub.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。