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进行递归校验
if err := gvalid.CheckStruct(userProfile, nil); err != nil {
fmt.Println("递归校验失败:", err)
return
}
// 输出递归校验成功信息
fmt.Println("递归校验成功!")
}
在这个例子中,我们定义了两个结构体User和UserProfile,UserProfile结构体中包含了一个嵌套的User结构体。我们使用gvalid.CheckStruct进行递归校验,确保整个结构体及其嵌套结构体都满足验证规则。
这样,你可以方便地对结构体中的嵌套结构体进行递归校验,保证整体的数据完整性。在实际应用中,可以根据业务需求定义更复杂的验证规则和递归校验逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/7586/GoFrame