go validator 值为 0 required 验证

简介: go validator 值为 0 required 验证

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

错误示范

package main
import (
  "fmt"
  "github.com/go-playground/validator/v10"
)
type Person struct {
  Name  string `validate:"required"`
  State int    `validate:"required,oneof=0 1"`
}
func main() {
  validate := validator.New()
  p := Person{
    Name:  "abcc",
    State: 0,
  }
  err := validate.Struct(p)
    // Key: 'Person.State' Error:Field validation for 'State' failed on the 'required' tag
  fmt.Println(err)
}

在这个例子中,虽然我们的 State 字段传入了值,但是验证却不通过。

正确示范

在使用 go-playground/validator/v10 验证一些空值的时候,需要使用指针类型。

package main
import (
  "fmt"
  "github.com/go-playground/validator/v10"
)
type Person struct {
  Name  string `validate:"required"`
    // 使用指针类型
  State *int   `validate:"required,oneof=0 1"`
}
func main() {
  validate := validator.New()
  state := 0
  p := Person{
    Name:  "abcc",
    State: &state, // 传入指针
  }
  err := validate.Struct(p)
    // <nil>
  fmt.Println(err)
}


目录
相关文章
|
3月前
|
数据采集 网络协议 测试技术
使用Go Validator在Go应用中有效验证数据
使用Go Validator在Go应用中有效验证数据
|
3月前
|
数据采集 网络协议 测试技术
使用Go Validator在Go应用中有效验证数据
使用Go Validator在Go应用中有效验证数据
|
3月前
|
IDE Go 开发工具
Go Error module declares its path as but was required as解决方案
文章提供了一个解决方案,用于处理在Go工程中将依赖的仓库从A更换为B(即使它们完全相同)时遇到的路径声明错误,建议通过发布新版本来解决此问题。
82 0
|
5月前
|
中间件 Go
go语言后端开发学习(三)——基于validator包实现接口校验
go语言后端开发学习(三)——基于validator包实现接口校验
|
5月前
|
存储 前端开发 中间件
Go Web 开发 Demo【用户登录、注册、验证】(3)
Go Web 开发 Demo【用户登录、注册、验证】
|
5月前
|
JSON 算法 Go
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
|
5月前
|
JSON 前端开发 Java
Go Web 开发 Demo【用户登录、注册、验证】(4)
Go Web 开发 Demo【用户登录、注册、验证】
|
5月前
|
Go 数据库
Go Web 开发 Demo【用户登录、注册、验证】(2)
Go Web 开发 Demo【用户登录、注册、验证】
|
5天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
23 2
|
4天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
13 2