Skip to content

govalid構造体バリデーションを当たり前に。

構造体タグで宣言し、カスタムチェッカーで拡張する。コンポーザブルで国際化対応、パニックしない。

govalid

慣れ親しんだ Go の API

go
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)
        }
    }
}
text
昵称的最后一个字符不能为下划线
用户编号应小于999
邮箱不是合法的电子邮箱格式

なぜ govalid?

govalid自前で if
ルールの置き場所フィールド直下の構造体タグハンドラー内に散在
クロスフィールドルールequal: チェッカー + Validate()手書きの条件分岐
ローカライズされたメッセージ標準搭載の i18n + SetMessageTemplates自前で実装
カスタムルールCheckers["myRule"] = …関数をコピペ
想定外入力での安全性nil/map/埋め込み/非公開を自動処理すべて自分次第

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