ZBLOG

golang 标签符号及单字段验证

在 Golang 中,结构体的字段可以添加标签(tag),用于描述该字段的元数据信息。常见的使用场景包括序列化和反序列化、验证等。

下面是一个示例结构体:

type User struct {
    Name     string `json:"name" validate:"required,min=3,max=20"`
    Age      int    `json:"age" validate:"required,min=18"`
    Email    string `json:"email" validate:"required,email"`
    Password string `json:"-"`
}

在这个结构体中,每个字段都有一个标签。例如,Name 字段的标签为 json:"name" validate:"required,min=3,max=20",其中:

  • json:"name" 表示该字段在 JSON 序列化时使用 "name" 作为键名;
  • validate:"required,min=3,max=20" 表示该字段需要进行验证,要求非空且长度在 3 到 20 之间。

如果我们需要对结构体进行单个字段验证,可以使用第三方库如 go-playground/validator.v10。示例代码如下:

import (
    "github.com/go-playground/validator/v10"
)

func validateField(value interface{}, tag string) error {
    validate := validator.New()
    
    field := struct {
        Value interface{} `validate:"` + tag + `"`
    }{
        Value: value,
    }
    
    return validate.Struct(field)
}

// 调用方式:
err := validateField(user.Name, "required,min=3,max=20")
if err != nil {
   // 处理错误
}

在上述代码中,我们通过 validateField 函数对结构体的 Name 字段进行验证。该函数接受待验证的值和标签字符串作为参数,返回错误信息(如果有)。

具体实现方式是,使用 go-playground/validator.v10 库创建一个新的 validator 实例,然后构造一个临时的 struct 对象,将待验证的值传递给该对象并设置对应字段的 tag 为输入参数中传入的标签字符串。最后调用 validator 的 Struct 方法进行验证,并返回可能存在的错误信息。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=6552

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?