Golang Go语言中如何判断 struct 的值是否存在

发布于 1周前 作者 h691938207 来自 Go语言

Golang Go语言中如何判断 struct 的值是否存在

https://stackblitz.com/edit/typescript-zlwtyj 如何才能像 ts 这样判断值

struct 中的 int 值初始化为 0,string 值初始化是"",这样子怎么判断接口有没有传进来啊,因为接口也是可以接收 0 和空字符串的

9 回复

加个状态变量

更多关于Golang Go语言中如何判断 struct 的值是否存在的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


struct 的成员用指针

struct{
Ts *int
}

用*int 和 *string (逃

#2
#3

nice,直接返回 nil

也可以用校验器校验 https://github.com/go-playground/validator


type user struct{
id int validate:"required"
name string validate:"required"
age int validate:"required,min=16,max=100"
}


validate := validator.New()
if err := validate.Struct(user); err == nil {
fmt.Println(“校验成功”)
} else {
fmt.Println(“校验失败”)
}

#5 因为是做 update,传入字段是动态的,所以不能用 required 只能用上面 2 、3 楼的指针了。要是是 create 的话那就可以用 required

所以你看到很多库, 例如 aws, 传参都是 *string, *int

在 Go 语言中,struct 类型是一种用户自定义的数据类型,通常用于将相关数据组合在一起。要判断 struct 中的某个字段值是否存在,实际上涉及到对字段值的具体类型及其零值(zero value)的理解。以下是一些常见的做法:

  1. 直接比较:对于基本类型(如 int, float64, string, bool 等),可以直接与零值进行比较。例如,if myStruct.Field == "" 来判断字符串字段是否为空。

  2. 指针字段:如果字段是指针类型,可以通过检查指针是否为 nil 来判断值是否存在。例如,if myStruct.PtrField == nil

  3. 接口字段:如果字段是接口类型,可以使用 reflect 包来检查接口是否包含值(即是否不为 nil)。例如,if myStruct.IfaceField != nil

  4. 自定义判断逻辑:对于更复杂的类型或需要特定判断逻辑的情况,可以编写自定义方法来判断字段值是否“存在”。

  5. 使用标签或辅助字段:在某些设计中,可能会引入额外的布尔字段来显式标记其他字段的值是否存在。

需要注意的是,Go 语言没有内置的“空值”概念,字段总是持有某个值(即使是零值)。因此,判断“是否存在”通常依赖于对具体业务逻辑的理解和对字段类型的适当处理。

回到顶部