パッケージバリデータは、タグに基づいて構造体と個々のフィールドの値の検証を実装します。
次の独自の機能があります。
go get を使用します。
go get github.com/go-playground/validator/v10
次に、バリデータパッケージを独自のコードにインポートします。
import "github.com/go-playground/validator/v10"
検証関数の戻り値の型エラー
これらは、以下で説明する問題を回避するために型エラーを返します (err は常に != nil です)。
バリデータは、不正な検証入力に対しては無効な検証エラーのみを返しますが、タイプエラーとして nil または 検証エラー。だから、あなたのコードでは、返されたエラーがnilではないかどうかをチェックし、エラーがInvalidValidationErrorであるかどうかをチェックするだけです(必要に応じて、ほとんどの場合そうではありません)型キャストしてValidationErrorsを次のように入力します。
err := validate.Struct(mystruct)
validationErrors := err.(validator.ValidationErrors)
詳しい使い方のドキュメントは https://pkg.go.dev/github.com/go-playground/validator/v10 をご覧ください。
タグ | 形容 |
---|---|
EQCSFIELD | フィールドが別のフィールドと等しい (相対) |
イクフィールド | フィールドが別のフィールドと等しい |
フィールドに含まれるもの | doc.go には記載されていません |
フィールド除外 | doc.go には記載されていません |
GTCSFフィールド | フィールドが別の相対フィールドより大きい |
グテックスフィールド | 別の相対フィールド以上のフィールド |
グテフィールド | 別のフィールド以上のフィールド |
ティッカー | フィールドが別のフィールドより大きい |
LTCフィールド | 別の相対フィールドより小さい |
テックスフィールド | 別の相対フィールド以下 |
ティフィールド | 別のフィールド以下 |
中田 | 他のフィールドより小さい |
ネックスフィールド | フィールドが別のフィールドと等しくない (相対) |
ネフィールド | フィールドが別のフィールドと等しくない |
タグ | 形容 |
---|---|
サイドル | クラスレスドメイン間ルーティング CIDR |
CIDRV4 | クラスレスドメイン間ルーティング CIDRv4 |
CIDRV6 | クラスレスドメイン間ルーティング CIDRv6 |
データウリ | データ URL |
FQDN | 完全修飾ドメイン名 (FQDN) |
ホスト名 | ホスト名 RFC 952 |
hostname_port | ホスト ポート |
hostname_rfc1123 | ホスト名 RFC 1123 |
IPアドレス | インターネット プロトコル アドレス IP |
ip4_addr | インターネット プロトコル アドレス IPv4 |
ip6_addr | インターネット プロトコル アドレス IPv6 |
ip_addr | インターネット プロトコル アドレス IP |
IPv4 | インターネット プロトコル アドレス IPv4 |
IPv6 | インターネット プロトコル アドレス IPv6 |
マック | メディア アクセス制御アドレス MAC |
tcp4_addr | 伝送制御プロトコル アドレス TCPv4 |
tcp6_addr | 伝送制御プロトコル アドレス TCPv6 |
tcp_addr | 伝送制御プロトコル アドレス TCP |
udp4_addr | ユーザー データグラム プロトコル アドレス UDPv4 |
udp6_addr | ユーザ データグラム プロトコル アドレス UDPv6 |
udp_addr | ユーザ データグラム プロトコル アドレス UDP |
unix_addr | Unix ドメインソケットエンドポイントアドレス |
ウリ | URI 文字列 |
リンク | URL 文字列 |
url_encoded | URL エンコード |
urn_rfc2141 | Urn RFC 2141 文字列 |
タグ | 形容 |
---|---|
アルファ | アルファ版のみ |
英数字 | 英数字 |
英数字ユニコード | 英数字ユニコード |
アルファユニコード | アルファユニコード |
アスキー | アスキー |
ブーリアン | ブーリアン |
含む | 含む |
含む任意 | いずれかを含む |
含むスルーン | ルーンを含む |
終了しない | で終わる |
で終わる | 次で終わる |
除外 | 除外 |
除外すべて | すべて除外 |
除外 | ルーンを除く |
小文字 | 小文字 |
マルチバイト | マルチバイト文字 |
数 | doc.go には記載されていません |
数値 | 数値 |
プリンタシチ | 印刷可能なアスキー |
開始しない | 次で始まらない |
で始まる | 次で始まる |
大文字 | 大文字 |
タグ | 形容 |
---|---|
ベース64 | ベース 64 文字列 |
ベース64URL | ベース64URL 文字列 |
ビック | 事業者識別コード (ISO 9362) |
bcp47_language_tag | 言語タグ (BCP 47) |
btc_addr | ビットコインアドレス |
btc_addr_bech32 | ビットコイン Bech32アドレス(セグウィット) |
credit_card | クレジットカード番号 |
日時 | 日時 |
e164 | E164形式の電話番号 |
電子メール | 電子メール文字列 |
eth_addr | イーサリアムアドレス |
16 進 数 | 16 進文字列 |
ヘックスカラー | ヘックスカラー文字列 |
ティッカー | HSL 文字列 |
ティッカー | HSLA 文字列 |
.html | HTML タグ |
html_encoded | HTML エンコード |
ティッカー | 国際標準図書番号 |
ISBN10 | 国際標準図書番号10 |
ISBN13 | 国際標準図書番号13 |
iso3166_1_alpha2 | 2 文字の国コード (ISO 3166-1 alpha-2) |
iso3166_1_alpha3 | 3 文字の国コード (ISO 3166-1 alpha-3) |
iso3166_1_alpha_numeric | 数値の国コード (ISO 3166-1 の数値) |
iso3166_2 | 国の下位区分コード (ISO 3166-2) |
ISO4217認証取得 | 通貨コード (ISO 4217) |
ジェイソン | ティッカー |
ティッカー | JSON Web Token (JWT) |
緯度 | 緯度 |
経度 | 経度 |
postcode_iso3166_alpha2 | 郵便 番号 |
postcode_iso3166_alpha2_field | 郵便 番号 |
ティッカー | RGB 文字列 |
ティッカー | RGBA 文字列 |
ティッカー | 社会保障番号 SSN |
タイムゾーン | タイムゾーン |
ウイド | ユニバーサル一意識別子 UUID |
UUID3 | ユニバーサル一意識別子 UUID v3 |
uuid3_rfc4122 | ユニバーサル一意識別子 UUID v3 RFC4122 |
UUID4 | ユニバーサル一意識別子 UUID v4 |
uuid4_rfc4122 | ユニバーサル一意識別子 UUID v4 RFC4122 |
UUID5 | ユニバーサル一意識別子 UUID v5 |
uuid5_rfc4122 | ユニバーサル一意識別子 UUID v5 RFC4122 |
uuid_rfc4122 | ユニバーサル一意識別子 UUID RFC4122 |
MD4 | MD4 ハッシュ |
MD5 | MD5 ハッシュ |
SHA256 | SHA256 ハッシュ |
SHA384 | SHA384 ハッシュ |
SHA512 | SHA512 ハッシュ |
リペムド128 | RIPEMD-128 ハッシュ |
リペムド128 | RIPEMD-160 ハッシュ |
タイガー128 | タイガー128ハッシュ |
タイガー160 | タイガー160ハッシュ |
タイガー192 | タイガー192ハッシュ |
センバー | セマンティック バージョニング 2.0.0 |
ウリド | 普遍的に一意の辞書式にソート可能な識別子ULID |
タグ | 形容 |
---|---|
式 | イコール |
ティッカー | より大きい |
ティッカー | より大きいか等しい |
ティッカー | 未満 |
ティッカー | 以下または等しい |
ne | 等しくない |
タグ | 形容 |
---|---|
ディレクトリ | ディレクトリ |
ファイル | ファイルパス |
デフォルト | デフォルトです |
レン | 長さ |
.max | 最大 |
分 | 最低限 |
次のいずれか | のいずれか |
必須 | 必須 |
required_if | 次の場合に必須 |
required_unless | 必要な場合 |
required_with | 必須項目 |
required_with_all | Required With All |
required_without | Required Without |
required_without_all | Required Without All |
excluded_if | Excluded If |
excluded_unless | Excluded Unless |
excluded_with | Excluded With |
excluded_with_all | Excluded With All |
excluded_without | Excluded Without |
excluded_without_all | Excluded Without All |
unique | Unique |
Tag | Description |
---|---|
iscolor | hexcolor|rgb|rgba|hsl|hsla |
country_code | iso3166_1_alpha2|iso3166_1_alpha3|iso3166_1_alpha_numeric |
goos: darwin
goarch: amd64
pkg: github.com/go-playground/validator
BenchmarkFieldSuccess-8 20000000 83.6 ns/op 0 B/op 0 allocs/op
BenchmarkFieldSuccessParallel-8 50000000 26.8 ns/op 0 B/op 0 allocs/op
BenchmarkFieldFailure-8 5000000 291 ns/op 208 B/op 4 allocs/op
BenchmarkFieldFailureParallel-8 20000000 107 ns/op 208 B/op 4 allocs/op
BenchmarkFieldArrayDiveSuccess-8 2000000 623 ns/op 201 B/op 11 allocs/op
BenchmarkFieldArrayDiveSuccessParallel-8 10000000 237 ns/op 201 B/op 11 allocs/op
BenchmarkFieldArrayDiveFailure-8 2000000 859 ns/op 412 B/op 16 allocs/op
BenchmarkFieldArrayDiveFailureParallel-8 5000000 335 ns/op 413 B/op 16 allocs/op
BenchmarkFieldMapDiveSuccess-8 1000000 1292 ns/op 432 B/op 18 allocs/op
BenchmarkFieldMapDiveSuccessParallel-8 3000000 467 ns/op 432 B/op 18 allocs/op
BenchmarkFieldMapDiveFailure-8 1000000 1082 ns/op 512 B/op 16 allocs/op
BenchmarkFieldMapDiveFailureParallel-8 5000000 425 ns/op 512 B/op 16 allocs/op
BenchmarkFieldMapDiveWithKeysSuccess-8 1000000 1539 ns/op 480 B/op 21 allocs/op
BenchmarkFieldMapDiveWithKeysSuccessParallel-8 3000000 613 ns/op 480 B/op 21 allocs/op
BenchmarkFieldMapDiveWithKeysFailure-8 1000000 1413 ns/op 721 B/op 21 allocs/op
BenchmarkFieldMapDiveWithKeysFailureParallel-8 3000000 575 ns/op 721 B/op 21 allocs/op
BenchmarkFieldCustomTypeSuccess-8 10000000 216 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeSuccessParallel-8 20000000 82.2 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeFailure-8 5000000 274 ns/op 208 B/op 4 allocs/op
BenchmarkFieldCustomTypeFailureParallel-8 20000000 116 ns/op 208 B/op 4 allocs/op
BenchmarkFieldOrTagSuccess-8 2000000 740 ns/op 16 B/op 1 allocs/op
BenchmarkFieldOrTagSuccessParallel-8 3000000 474 ns/op 16 B/op 1 allocs/op
BenchmarkFieldOrTagFailure-8 3000000 471 ns/op 224 B/op 5 allocs/op
BenchmarkFieldOrTagFailureParallel-8 3000000 414 ns/op 224 B/op 5 allocs/op
BenchmarkStructLevelValidationSuccess-8 10000000 213 ns/op 32 B/op 2 allocs/op
BenchmarkStructLevelValidationSuccessParallel-8 20000000 91.8 ns/op 32 B/op 2 allocs/op
BenchmarkStructLevelValidationFailure-8 3000000 473 ns/op 304 B/op 8 allocs/op
BenchmarkStructLevelValidationFailureParallel-8 10000000 234 ns/op 304 B/op 8 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-8 5000000 385 ns/op 32 B/op 2 allocs/op
BenchmarkStructSimpleCustomTypeSuccessParallel-8 10000000 161 ns/op 32 B/op 2 allocs/op
BenchmarkStructSimpleCustomTypeFailure-8 2000000 640 ns/op 424 B/op 9 allocs/op
BenchmarkStructSimpleCustomTypeFailureParallel-8 5000000 318 ns/op 440 B/op 10 allocs/op
BenchmarkStructFilteredSuccess-8 2000000 597 ns/op 288 B/op 9 allocs/op
BenchmarkStructFilteredSuccessParallel-8 10000000 266 ns/op 288 B/op 9 allocs/op
BenchmarkStructFilteredFailure-8 3000000 454 ns/op 256 B/op 7 allocs/op
BenchmarkStructFilteredFailureParallel-8 10000000 214 ns/op 256 B/op 7 allocs/op
BenchmarkStructPartialSuccess-8 3000000 502 ns/op 256 B/op 6 allocs/op
BenchmarkStructPartialSuccessParallel-8 10000000 225 ns/op 256 B/op 6 allocs/op
BenchmarkStructPartialFailure-8 2000000 702 ns/op 480 B/op 11 allocs/op
BenchmarkStructPartialFailureParallel-8 5000000 329 ns/op 480 B/op 11 allocs/op
BenchmarkStructExceptSuccess-8 2000000 793 ns/op 496 B/op 12 allocs/op
BenchmarkStructExceptSuccessParallel-8 10000000 193 ns/op 240 B/op 5 allocs/op
BenchmarkStructExceptFailure-8 2000000 639 ns/op 464 B/op 10 allocs/op
BenchmarkStructExceptFailureParallel-8 5000000 300 ns/op 464 B/op 10 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-8 3000000 417 ns/op 72 B/op 3 allocs/op
BenchmarkStructSimpleCrossFieldSuccessParallel-8 10000000 163 ns/op 72 B/op 3 allocs/op
BenchmarkStructSimpleCrossFieldFailure-8 2000000 645 ns/op 304 B/op 8 allocs/op
BenchmarkStructSimpleCrossFieldFailureParallel-8 5000000 285 ns/op 304 B/op 8 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 3000000 588 ns/op 80 B/op 4 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 10000000 221 ns/op 80 B/op 4 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 2000000 868 ns/op 320 B/op 9 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 5000000 337 ns/op 320 B/op 9 allocs/op
BenchmarkStructSimpleSuccess-8 5000000 260 ns/op 0 B/op 0 allocs/op
BenchmarkStructSimpleSuccessParallel-8 20000000 90.6 ns/op 0 B/op 0 allocs/op
BenchmarkStructSimpleFailure-8 2000000 619 ns/op 424 B/op 9 allocs/op
BenchmarkStructSimpleFailureParallel-8 5000000 296 ns/op 424 B/op 9 allocs/op
BenchmarkStructComplexSuccess-8 1000000 1454 ns/op 128 B/op 8 allocs/op
BenchmarkStructComplexSuccessParallel-8 3000000 579 ns/op 128 B/op 8 allocs/op
BenchmarkStructComplexFailure-8 300000 4140 ns/op 3041 B/op 53 allocs/op
BenchmarkStructComplexFailureParallel-8 1000000 2127 ns/op 3041 B/op 53 allocs/op
BenchmarkOneof-8 10000000 140 ns/op 0 B/op 0 allocs/op
BenchmarkOneofParallel-8 20000000 70.1 ns/op 0 B/op 0 allocs/op
これは、事前検証または検証後のこのライブラリの使用を補完するソフトウェアのリストです。
プルリクエストを行う...
MITライセンスの下で配布されており、詳細についてはコード内のライセンスファイルを参照してください。
このプロジェクトは、コミュニティを適切にサポートするために複数の人が必要になるほど大きくなりました。 メンテナになることに興味があるなら、私に連絡してください https://github.com/deankarn