Golang Go语言中如何判断 struct 的值是否存在
Golang Go语言中如何判断 struct 的值是否存在
https://stackblitz.com/edit/typescript-zlwtyj 如何才能像 ts 这样判断值
struct 中的 int 值初始化为 0,string 值初始化是"",这样子怎么判断接口有没有传进来啊,因为接口也是可以接收 0 和空字符串的
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
也可以尝试用这个 github.com/guregu/null
所以你看到很多库, 例如 aws, 传参都是 *string, *int
在 Go 语言中,struct
类型是一种用户自定义的数据类型,通常用于将相关数据组合在一起。要判断 struct
中的某个字段值是否存在,实际上涉及到对字段值的具体类型及其零值(zero value)的理解。以下是一些常见的做法:
-
直接比较:对于基本类型(如
int
,float64
,string
,bool
等),可以直接与零值进行比较。例如,if myStruct.Field == ""
来判断字符串字段是否为空。 -
指针字段:如果字段是指针类型,可以通过检查指针是否为
nil
来判断值是否存在。例如,if myStruct.PtrField == nil
。 -
接口字段:如果字段是接口类型,可以使用
reflect
包来检查接口是否包含值(即是否不为nil
)。例如,if myStruct.IfaceField != nil
。 -
自定义判断逻辑:对于更复杂的类型或需要特定判断逻辑的情况,可以编写自定义方法来判断字段值是否“存在”。
-
使用标签或辅助字段:在某些设计中,可能会引入额外的布尔字段来显式标记其他字段的值是否存在。
需要注意的是,Go 语言没有内置的“空值”概念,字段总是持有某个值(即使是零值)。因此,判断“是否存在”通常依赖于对具体业务逻辑的理解和对字段类型的适当处理。