Golang数据验证库govalidator v1.9.3版本发布

Golang数据验证库govalidator v1.9.3版本发布 修复了一些验证规则点击此处查看

1 回复

更多关于Golang数据验证库govalidator v1.9.3版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在govalidator v1.9.3版本中,修复了一些关键的验证规则问题,这对于确保数据验证的准确性和可靠性非常重要。以下是一个示例,展示如何使用该版本进行基本的数据验证:

package main

import (
	"fmt"
	"log"
	"github.com/thedevsaddam/govalidator"
)

type User struct {
	Name  string `json:"name"`
	Email string `json:"email"`
	Age   int    `json:"age"`
}

func main() {
	rules := govalidator.MapData{
		"name":  []string{"required", "min:3", "max:50"},
		"email": []string{"required", "email"},
		"age":   []string{"required", "numeric", "min:18", "max:99"},
	}

	messages := govalidator.MapData{
		"name": []string{"required:姓名不能为空", "min:姓名至少3个字符", "max:姓名最多50个字符"},
		"email": []string{"required:邮箱不能为空", "email:邮箱格式不正确"},
		"age": []string{"required:年龄不能为空", "numeric:年龄必须是数字", 
			"min:年龄必须大于等于18岁", "max:年龄必须小于等于99岁"},
	}

	opts := govalidator.Options{
		Data: &User{
			Name:  "张三",
			Email: "zhangsan@example.com",
			Age:   25,
		},
		Rules:    rules,
		Messages: messages,
	}

	v := govalidator.New(opts)
	err := v.ValidateStruct()

	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("数据验证通过")
}

该版本修复了之前在某些边界条件下验证规则可能失效的问题,特别是在处理Unicode字符长度验证和特定格式的邮箱验证时。例如,之前版本在处理包含emoji的用户名时可能出现长度计算错误,v1.9.3已修复此问题。

对于表单数据验证:

func validateForm() {
	data := map[string]interface{}{
		"username": "user123",
		"password": "secret123",
		"phone":    "+8613812345678",
	}

	rules := govalidator.MapData{
		"username": []string{"required", "alpha_num", "min:5", "max:20"},
		"password": []string{"required", "min:8"},
		"phone":    []string{"required", "phone"},
	}

	v := govalidator.New(govalidator.Options{
		Data:   data,
		Rules:  rules,
	})

	if err := v.Validate(); len(err) > 0 {
		for field, errors := range err {
			fmt.Printf("%s: %v\n", field, errors)
		}
	} else {
		fmt.Println("表单验证通过")
	}
}

这些修复确保了验证规则在各种场景下的正确执行,提升了库的稳定性和可靠性。

回到顶部