govalid とは?
govalid は、Go 用の小さく意見の通った構造体バリデーターです。 あなたの構造体タグから直接バリデーションルールを読み取り、リフレ クションで実行します——コード生成なし、スキーマファイルなし、 ロケール処理用の golang.org/x/text 以外にサードパーティ依存も ありません。
go
type RegisterForm struct {
Username string `valid:"required;username;minlen:3;maxlen:20" label:"用户名"`
Email string `valid:"required;email" label:"邮箱"`
Age uint `valid:"required;min:18;max:120" label:"年龄"`
}
errs, ok := govalid.Check(form)設計原則
- タグが真実の源。 構造体フィールドのルールはフィールドのすぐ 隣にあります。レビュアーはハンドラーを grep せずとも制約を見ら れます。
- コンポーザブル、魔法はなし。 ルールは map に入った素のゲンメ ソッドです。自前のルールを追加するのは 1 行。学ぶべき DSL もあり ません。
- 賢さより安全。 nil ポインタ、map、channel、埋め込み構造体、 非公開フィールドもすべてパニックせず処理されます。本ライブラリは 数百万件規模のファズテスト済みです。
- 国際化が前提。 中国語と英語が同梱、任意のロケールを差し込み 可能。フィールドラベル自体も
label-en/label-zh/label-…タグでロケール別に切り替えられます。
govalid を使うべきとき
govalid はバリデーション業務の退屈な 80% に最適化されています:
- HTTP リクエストボディとクエリパラメータ
- 起動時の設定ファイル
- ドメインフォーム(登録・プロフィール・住所録)
- クロスフィールド制約(パスワード確認、条件付き必須)
JSON Schema、Protobuf ディスクリプタ、ランタイム生成ルールなど、 動的・スキーマオンザワイヤなバリデーションが要るなら別のツール を選んでください。