Skip to content

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

振る舞い

  1. nil セーフ。 nil および型付き nil ポインタは (nil, true) を返します。
  2. ポインタ対応。 ポインタは解参照されます;元の値のメソッド セットがその前にキャプチャされるため、値を渡しても、ポインタを 渡しても Validate() は動きます。
  3. 再帰。 ネスト構造体と構造体スライスは自動的に走査されます (ネスト構造体とスライス 参照)。
  4. タグ駆動。 valid:"…" の各ルールはフィールドの値に対して 走り、Checkers でチェッカー関数を解決します。
  5. 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 を実装します。 順序:

  1. トップレベルフィールドの宣言順。
  2. 構造体スライスフィールド内では、要素順。
  3. 要素内では、フィールド宣言順。
  4. Validate() のエラーは最後。

MIT ライセンスのもとで公開されています。