以下是一个简单的例子,演示如何使用GoFrame的gvalid包进行Struct校验以及Assoc关联:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gvalid"
)
type User struct {
Id int `json:"id"`
Name string `json:"name" v:"required|length:1,30"`
Email string `json:"email" v:"required|email"`
Password string `json:"password" v:"required|password"`
}
type UserProfile struct {
User User `json:"user" v:"required"`
NickName string `json:"nick_name" v:"required|length:1,30"`
}
func main() {
// 初始化GoFrame框架
g.Init()
// 创建一个用户对象
user := User{
Id: 1,
Name: "John Doe",
Email: "john@example.com",
Password: "123456",
}
// 创建一个用户资料对象
userProfile := UserProfile{
User: user,
NickName: "John",
}
// 使用gvalid.CheckStruct进行Struct校验
if err := gvalid.CheckStruct(userProfile, nil); err != nil {
fmt.Println("Struct校验失败:", err)
return
}
// 输出验证成功信息
fmt.Println("Struct校验成功!")
// 如果有关联字段,使用Assoc进行关联校验
if err := gvalid.CheckStructAssoc(userProfile, g.MapStrStr{"user": "required"}); err != nil {
fmt.Println("Assoc关联校验失败:", err)
return
}
// 输出关联校验成功信息
fmt.Println("Assoc关联校验成功!")
}
在这个例子中,我们定义了User和UserProfile两个结构体,并使用gvalid包进行校验。User中包含了一些基本的字段,而UserProfile包含了一个嵌套的User字段以及其他字段。
在校验过程中,我们使用了gvalid.CheckStruct对整个结构体进行校验,然后使用gvalid.CheckStructAssoc对关联字段进行校验,确保关联的字段也满足条件。
请注意,具体的校验规则(例如v:"required|length:1,30")可以根据你的实际需求进行调整。这里只是一个简单的演示。
转载请注明出处:http://www.zyzy.cn/article/detail/7581/GoFrame