🏷️
タグ駆動・設定不要
バリデーションルールを構造体フィールドのすぐ横に宣言。ビルダーも、スキーマファイルも要らない。構造体そのものがスキーマ。
package main
import (
"fmt"
"github.com/wuhan005/govalid"
)
func main() {
v := struct {
Name string `valid:"required;username" label:"昵称"`
ID int `valid:"required;min:0;max:999" label:"用户编号"`
Mail string `valid:"required;email" label:"邮箱"`
}{
Name: "e99_",
ID: 1990,
Mail: "i@github.red.",
}
if errs, ok := govalid.Check(v); !ok {
for _, err := range errs {
fmt.Println(err)
}
}
}昵称的最后一个字符不能为下划线
用户编号应小于999
邮箱不是合法的电子邮箱格式| govalid | 自前で if | |
|---|---|---|
| ルールの置き場所 | フィールド直下の構造体タグ | ハンドラー内に散在 |
| クロスフィールドルール | equal: チェッカー + Validate() | 手書きの条件分岐 |
| ローカライズされたメッセージ | 標準搭載の i18n + SetMessageTemplates | 自前で実装 |
| カスタムルール | Checkers["myRule"] = … | 関数をコピペ |
| 想定外入力での安全性 | nil/map/埋め込み/非公開を自動処理 | すべて自分次第 |