Skip to content

govalid让结构体校验真正好用。

可组合、支持国际化、不会 panic —— 用结构体标签声明,用自定义校验器扩展。

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
规则在哪里字段旁的结构体标签散落在各个 handler 中
跨字段规则equal: 校验器 + Validate()手写条件判断
本地化错误内置 i18n + SetMessageTemplates自己造轮子
自定义规则Checkers["myRule"] = …复制粘贴函数
怪异输入安全性自动处理 nil/map/嵌入/未导出全靠你

基于 MIT 协议发布。