Check
go
func Check(v interface{}, lang ...language.Tag) (errs []*ErrContext, ok bool)v をその構造体タグと(オプションで)Validate() error メソッド に対してバリデートします。失敗のリストと、失敗が無い場合のみ true になる ok フラグを返します。
入力
| パラメータ | 説明 |
|---|---|
v | 構造体、構造体ポインタ、または構造体スライス。他の種別(map、int 等)は (nil, true) を返します。 |
lang | オプションのロケール。最初の値が採用され、残りは無視されます。デフォルトは language.Chinese。 |
振る舞い
- nil セーフ。
nilおよび型付き nil ポインタは(nil, true)を返します。 - ポインタ対応。 ポインタは解参照されます;元の値のメソッド セットがその前にキャプチャされるため、値を渡しても、ポインタを 渡しても
Validate()は動きます。 - 再帰。 ネスト構造体と構造体スライスは自動的に走査されます (ネスト構造体とスライス 参照)。
- タグ駆動。
valid:"…"の各ルールはフィールドの値に対して 走り、Checkersでチェッカー関数を解決します。 - Validate フック。 タグルールの後、
v(あるいはそのポインタ) がValidate() errorを持っていれば、govalid はこれを呼び出し、 非 nil のエラーを追加します。
例
基本
go
errs, ok := govalid.Check(form)呼び出し単位のロケール
go
errs, ok := govalid.Check(form, language.English)構造体スライス
go
items := []Item{{Name: ""}, {Name: "ok"}}
errs, ok := govalid.Check(items)nil ポインタ
go
var f *Form
errs, ok := govalid.Check(f) // (nil, true) を返す戻り値
errs は *ErrContext のスライスで、各要素は error を実装します。 順序:
- トップレベルフィールドの宣言順。
- 構造体スライスフィールド内では、要素順。
- 要素内では、フィールド宣言順。
Validate()のエラーは最後。