登录
首页 >  Golang >  Go问答

在 Go Validator.v2 中处理嵌套类型

来源:stackoverflow

时间:2024-03-07 17:27:26 245浏览 收藏

本篇文章向大家介绍《在 Go Validator.v2 中处理嵌套类型》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我一直在使用 go validator.v2 进行字段验证,它非常适合我的非结构类型字段。但是,当涉及到处理基于结构的字段(在原始结构内)时,没有任何相关文档。 https://pkg.go.dev/mod/gopkg.in/validator.v2

我知道 v10 支持它,但我更喜欢 v2 中的内置正则表达式支持。无论如何,我可以为这些基于结构的字段自定义验证吗?例如

type user struct {
   Name            string   `validate:"nonzero"`
   Age             int      `validate:"min=21"`
   BillingAddress  *Address  ???

}

我希望验证如上所示的 billingaddress 字段,还是只需在 address 模型中写入验证标记,它也会自动验证它?

谢谢并感谢任何指点!


解决方案


验证器包将递归搜索结构。只需确保嵌套结构体的字段不是匿名的并且具有 validate 标记即可。
如果您发现自己对某个软件包的功能迷失了方向,请查看他们的测试文件,它可能会揭示一些东西。例如,验证器包测试有一个嵌套结构的示例 here

示例:

package main

import (
    "log"

    "gopkg.in/validator.v2"
)

type address struct {
    val string `validate:"nonzero"`
}

type user struct {
    name           string `validate:"nonzero"`
    age            int    `validate:"min=21"`
    billingaddress *address
}

func main() {
    nur := user{name: "something", age: 21, billingaddress: &address{val: ""}}
    err := validator.validate(&nur)
    log.fatal(err)
}


2022/11/10 10:32:43 BillingAddress.Val: zero value

本篇关于《在 Go Validator.v2 中处理嵌套类型》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>